本帖最后由 FF7 于 2012-2-13 23:27 编辑
上清宫主 发表于 2012-2-13 21:55
这个帖子有意思,学习群子等各位大大的了!
37、39楼为什么非要For i = 0 To UBound(Arr) - 1?先将第0个处 ...
呵呵,48楼的代码纯粹是想把啰嗦的条件语句全部去掉。不过的确如上清宫主所言,还要考虑到效率!那就增加一些条件语句。似乎代码这样更简化咯!!
- Sub xx()
- Dim t As Integer, n As Integer, x As Integer, y As Integer, strA As String, a(0 To 9, 0 To 1), Arr
- Arr = Array(0, 1, 1, 1, 0, 0, 2, 2, 1, 3, 3, 0, 0, 1, 1, 1, 2, 3, 0, 2)
- t = 999
- For i = 0 To UBound(Arr)
- If Arr(i) <> t Then
- t = Arr(i)
- n = 1
- If y < Arr(i) Then y = Arr(i)
- Else
- n = n + 1
- End If
- If n > a(t, 0) Then
- a(t, 0) = n
- a(t, 1) = 1
- ElseIf n = a(t, 0) Then
- a(t, 1) = a(t, 1) + 1
- End If
- Next
-
- For m = 0 To y
- strA = strA & m & "最大连续" & a(m, 0) & "次,这种连续总共出现" & a(m, 1) & "次。" & Chr(10)
- Next
- MsgBox strA
- End Sub
复制代码
代码二:对任意字符或字符串统计最大连续及其次数!
宫主再帮忙参谋参谋!!
- Sub yy()
- Dim dc As Object
- Set dc = CreateObject("Scripting.dictionary")
- Arr = Array(0, 1, 1, "A", "A", 1, 0, 0, 2, 2, "中", "中", "国", 1, 3, 3, 0, 0, 1, 1, 1, 2, 3, 0, 2, "A", "A", "B", "B", "C", "A", "A")
- Dim i As Integer, n As Long, x As Integer, a()
- strA = ""
- For i = 0 To UBound(Arr)
- If Arr(i) <> strA Then
- If Not dc.exists(Arr(i)) Then
- ReDim Preserve a(0 To 1, 0 To x)
- dc(Arr(i)) = x
- x = x + 1
- End If
- strA = Arr(i)
- n = 1
- Else
- n = n + 1
- End If
- If n > a(0, dc(strA)) Then
- a(0, dc(strA)) = n
- a(1, dc(strA)) = 1
- ElseIf n = a(0, dc(strA)) Then
- a(1, dc(strA)) = a(1, dc(strA)) + 1
- End If
- Next
-
- b = dc.keys
- strA = "所有元素最大连续及其出现次数统计:"
- For i = 0 To UBound(b)
- strA = strA & Chr(10) & b(i) & "--最大连续" & a(0, dc(b(i))) & "次,其出现的次数为" & a(1, dc(b(i))) & "次"
- Next
- MsgBox strA
- End Sub
复制代码
|