none
[請教]統計陣列元素個數 RRS feed

  • 問題

  • 請問如果有一個需求是會有隨機的英文單字不停的餵到陣列裡

    如何能夠快速的統計出,目前那個英文單字累計的元素個數是最多的?

    用那一種型態定義會比較好操作(List,ArrayList, HashTable ...)??

    若是可以也可以貼個範例參考一下,謝謝
    消失的紅河村 http://ballwarm.blogspot.com/
    2009年9月11日 上午 08:49

解答

所有回覆

  • Dim myHashtable As Hashtable = New Hashtable()
    
    '...
    
    If myHashtable.ContainsKey(myEnglish ) Then
       myHashtable(myEnglish) = myHashtable(myEnglish) + 1
    
       '自行判斷myHashtable(myEnglish)的個數有幾個了
    
    Else
       myHashtable.Add(myEnglish, 0)
    End If

    我的方法很笨…用這樣判斷的…有更好的方式嗎??
    消失的紅河村 http://ballwarm.blogspot.com/
    • 已標示為解答 ballwarm 2009年9月16日 上午 09:22
    2009年9月11日 上午 09:25
  • Hi,

    Try it

    Module Module1
    
    
        Sub Main()
            Dim symbolCount(25) As Integer
            Dim inputString As String = "aaabbbbbbcccccadeffffaa"
            Dim startAscii As Integer = Asc("a"c)
            Dim maxSymbolIdx As Integer
            Dim idx As Integer
    
            For Each c As Char In inputString
                idx = Asc(c) - startAscii
                symbolCount(idx) = symbolCount(idx) + 1
                If symbolCount(idx) > symbolCount(maxSymbolIdx) Then
                    maxSymbolIdx = idx
                End If
            Next
    
            For idx = 0 To 25
                Console.Write(Chr(startAscii + idx) & ": ")
                Console.WriteLine(symbolCount(idx).ToString)
            Next
            Console.WriteLine()
            Console.Write("Max Count Symbol: ")
            Console.WriteLine(Chr(startAscii + maxSymbolIdx))
        End Sub
    
    End Module
    


    http://www.dotblogs.com.tw/larrynung/
    2009年9月11日 上午 09:42
  • Linq版本

        Sub Test2(ByVal inputString As String)
            Dim chars() As Char = inputString.ToCharArray
            Dim linq = From c In chars Group c By c Into Group Order By Group.Count Descending Select New With {.Symbol = c, .Count = Group.Count}
            For Each item In linq
                Console.WriteLine(item.Symbol & ": " & item.Count)
            Next
        End Sub


    http://www.dotblogs.com.tw/larrynung/
    2009年9月11日 上午 10:19
  • Hi, Sorry~再看了一下 發現你問的是英文單字 我上面寫的都是英文字母 不過應該都大同小異啦 改一下第二個程式應該就可以出來了 這種問題若能找到辦法在填值時用一些資料結構或是變數 讓你在填完的同時就做完統計的動作的話 會比後續在For迴圈統計來的快速
    http://www.dotblogs.com.tw/larrynung/
    2009年9月11日 下午 04:46
  • 老實說...........看到蹂躪大的陣列用法讓小弟嚇了一跳
    好高明的寫法
    2009年9月12日 上午 05:58
  • 請問如果有一個需求是會有隨機的英文單字不停的餵到陣列裡

    如何能夠快速的統計出,目前那個英文單字累計的元素個數是最多的?

    用那一種型態定義會比較好操作(List,ArrayList, HashTable ...)??

    若是可以也可以貼個範例參考一下,謝謝
    消失的紅河村 http://ballwarm.blogspot.com/

    我的想法,是否可在餵到陣列前計算字串長度去記錄,就不用塞完後再比較了
    用那一種我覺得都差不多,一定要全部跑完一次才會知道(不管是.Net幫你處理或你自己跑for)

    2009年9月14日 上午 04:41
  • 謝謝阿尼推薦的文章

    還有其他熱心的大大的解答


    消失的紅河村 http://ballwarm.blogspot.com/
    2009年9月16日 上午 09:23