| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8736 人关注过本帖, 1 人收藏
标题:统计数组中相同的字符串以及重复的次数
只看楼主 加入收藏
vbhello
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2014-5-9
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:14 
统计数组中相同的字符串以及重复的次数
统计数组中相同的字符串以及重复的次数
例如:
c,4,k
m,3,e
9,f,s
2,5,3
9,f,s
输出结果为:
9,f,s出现的次数为2

c,4,k
m,3,e
9,f,s
2,5,3
2,5,3
9,f,s
2,5,3
输出结果为:
9,f,s出现的次数为2
2,5,3出现的次数为3

先谢谢各位的回复
搜索更多相关主题的帖子: 字符串 统计 
2014-05-09 00:58
alike123
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:107
专家分:428
注 册:2014-2-10
收藏
得分:5 
这是个难点,不过刚好我有了灵感
1。先对数组排序
2。两两比较
多谢你提出来这个问题,以前我也遇到类似难题,现在突然有感觉了
2014-05-09 08:57
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:5 
统计固定长度字符串字频好像不难哦,你要是给出需统计的字符串数组的来源代码,我肯定能帮你完成。
2014-05-09 09:03
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4940
专家分:30047
注 册:2008-10-15
收藏
得分:5 
一种方法:先排序,然后与前一个进行比较并进行统计。
二种方法:如果数据是保存在数据库里的,进行分组统计即可。

三种方法:如果查找指定的字符串在 一堆里出现的次数,可以使用
split 函数,来达到统计的目的。
按指定的字符串分解字符串后,统计有多少段,总段数-1 就是 出现的次数。

授人于鱼,不如授人于渔
早已停用QQ了
2014-05-09 09:51
vbhello
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2014-5-9
收藏
得分:0 
回复 2 楼 alike123
谢谢你的回复,两两比较的意思不是很懂
2014-05-09 13:48
vbhello
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2014-5-9
收藏
得分:0 
回复 3 楼 xzlxzlxzl
谢谢你的回复,下面是字符串数组的源代码:
    Dim s As String, a() As String
    s = "c,4,k" & vbCrLf & _
        "m,3,e" & vbCrLf & _
        "9,f,s" & vbCrLf & _
        "2,5,3" & vbCrLf & _
        "2,5,3" & vbCrLf & _
        "9,f,s" & vbCrLf & _
        "2,5,3"
    a = Split(s, vbCrLf)
2014-05-09 13:49
vbhello
Rank: 2
等 级:论坛游民
帖 子:17
专家分:15
注 册:2014-5-9
收藏
得分:0 
回复 4 楼 风吹过 b
谢谢你的回复,
一:与前一个进行比较并进行统计不是很懂。是用两个FOR循环么?
for i = 0 to ubound(a) -1
    for j = i+1 to ubound(a)
        ......
    next j
next i
二:数据没有保存在数据库里,是保存在txt文档里的;
三:没有查找指定的字符串。
2014-05-09 14:03
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4940
专家分:30047
注 册:2008-10-15
收藏
得分:0 
例如:
c,4,k
m,3,e
9,f,s
2,5,3
2,5,3
9,f,s
2,5,3
排序后的结果是:
2,5,3
2,5,3
2,5,3
9,f,s
9,f,s
c,4,k
m,3,e

j=1        '计算有多少个不重复
'b()        '保存不重复的数据的内容
'c()        '对应出现的次数
b(1)=a(1)    '保存第一个字串
js=0
for i=2 to  ubound(a)
if a(i-1)=a(i) then     '如果等于前一个
   js=js+1        '计数
else
   c(j)=js        '保存前一个的计数值
   j=j+1          '向后移一个
   b(j)=a(i)      '保存字符串内容
   js=0           '计数器回零
end if
next i

授人于鱼,不如授人于渔
早已停用QQ了
2014-05-09 17:05
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
回复 6 楼 vbhello
想了好半天,好象不需要排序这么复杂的,用一个二维数组分别记录字符串和出现的次数就行了,代码如下:
Private Sub Command1_Click()
    Dim s As String, a() As String, b() As String, i As Integer, j As Integer, k As Integer
    s = "c,4,k" & vbCrLf & _
        "m,3,e" & vbCrLf & _
        "9,f,s" & vbCrLf & _
        "2,5,3" & vbCrLf & _
        "2,5,3" & vbCrLf & _
        "9,f,s" & vbCrLf & _
        "2,5,3"
    a = Split(s, vbCrLf)
    ReDim b(UBound(a), 1)
    k = 0
    For i = 0 To UBound(a)
    For j = k To 0 Step -1
    If a(i) = b(j, 0) Then
    b(j, 1) = Val(b(j, 1)) + 1
    Exit For
    End If
    Next
    If j < 0 Then
    b(k, 0) = a(i)
    b(k, 1) = 1
    k = k + 1
    End If
    Next
    Me.Cls
    For i = 0 To k - 1
    Print b(i, 0) & "出现" & b(i, 1) & "次"
    Next
End Sub
图片附件: 游客没有浏览图片的权限,请 登录注册
2014-05-09 18:42
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:5 
比较实用的是对一篇文章中的字、词、句子的统计算法,被统计的字符是变长的,最后会形成一个哈夫曼树,作为压缩还原整篇文章的基础,这种算法还是非常拗口难懂的,尽管网上一大堆这方面的vb代码,但如果自己能独立写个出来,还是非常有成就感的。
2014-05-09 19:05
快速回复:统计数组中相同的字符串以及重复的次数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017094 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved