如何计算字符串中字符的频率?我需要编写某种循环来计算字符串中每个字母的频率。例如:“aasjjikkk”将计为2'a',1'',2'j',1'i',3'k'。最终像这样的id最终会出现在一个地图中,其中字符为键,计数为值。有什么好主意怎么做?
3 回答
慕斯王
TA贡献1864条经验 获得超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的解决方案并计算总发生次数。
德玛西亚99
TA贡献1770条经验 获得超3个赞
一个简洁的方法是:
Map<Character,Integer> frequencies = new HashMap<>();for (char ch : input.toCharArray()) frequencies.put(ch, frequencies.getOrDefault(ch, 0) + 1);
我们使用for-each循环遍历每个角色。所述frequencies.getOrDefault()
如果键存在或返回(默认)第二个参数得到的值。
添加回答
举报
0/150
提交
取消