我需要编写某种循环来计算字符串中每个字母的频率。
例如:“aasjjikkk”将计算 2 个“a”、1 个“s”、2 个“j”、1 个“i”、3 个“k”。最终像这样的 id 最终会出现在以字符为键、计数为值的 map 中。任何好主意如何做到这一点?
最佳答案
您可以使用 java Map 并将 char
映射到 int
。然后,您可以遍历字符串中的字符并检查它们是否已添加到 map 中,如果有,则可以增加其值。
例如:
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 并计算总出现次数。
关于java - 如何计算字符串中字符的频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712587/