如何計算字符串中字符的頻率?我需要編寫某種循環(huán)來計算字符串中每個字母的頻率。例如:“aasjjikkk”將計為2'a',1'',2'j',1'i',3'k'。最終像這樣的id最終會出現(xiàn)在一個地圖中,其中字符為鍵,計數(shù)為值。有什么好主意怎么做?
3 回答

慕斯王
TA貢獻1864條經(jīng)驗 獲得超2個贊
您可以使用java Map并將a映射char
到int
。然后,您可以遍歷字符串中的字符并檢查它們是否已添加到地圖中,如果有,則可以增加其值。
例如:
HashMap<Character, Integer> map = new HashMap<Character, Integer>();String s = "aasjjikkk";for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); Integer val = map.get(c); if (val != null) { map.put(c, new Integer(val + 1)); } else { map.put(c, 1); }}
最后,您將計算您遇到的所有字符,并從中提取頻率。
或者,您可以使用Bozho使用Multiset的解決方案并計算總發(fā)生次數(shù)。

德瑪西亞99
TA貢獻1770條經(jīng)驗 獲得超3個贊
一個簡潔的方法是:
Map<Character,Integer> frequencies = new HashMap<>();for (char ch : input.toCharArray()) frequencies.put(ch, frequencies.getOrDefault(ch, 0) + 1);
我們使用for-each循環(huán)遍歷每個角色。所述frequencies.getOrDefault()
如果鍵存在或返回(默認)第二個參數(shù)得到的值。
添加回答
舉報
0/150
提交
取消