我有一段代码会告诉我字符串中出现次数最多的字符。该cade如下:静态字符串中字符数的计数
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MaximumOccurringChar {
static final String TEST_CASE_1 = "Hello! Are you all fine? What are u doing today? Hey Guyz,Listen! I have a plan for today. Help!";
public static void main(String[] args) {
MaximumOccurringChar test = new MaximumOccurringChar();
List<Character> result = test.maximumOccurringChars(TEST_CASE_1, true);
System.out.println(result);
}
public List<Character> maximumOccurringChars(String str) {
return maximumOccurringChars(str, false);
}
// set skipSpaces true if you want to skip spaces
public List<Character> maximumOccurringChars(String str, Boolean skipSpaces) {
Map<Character, Integer> map = new HashMap<>();
List<Character> occurrences = new ArrayList<>();
int maxOccurring = 0;
// creates map of all characters
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (skipSpaces && ch == ' ') // skips spaces if needed
continue;
if (map.containsKey(ch)) {
map.put(ch, map.get(ch) + 1);
} else {
map.put(ch, 1);
}
if (map.get(ch) > maxOccurring) {
maxOccurring = map.get(ch); // saves max occurring
}
}
// finds all characters with maxOccurring and adds it to occurrences List
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if (entry.getValue() == maxOccurring) {
occurrences.add(entry.getKey());
}
}
return occurrences;
}
}
但我无法弄清楚如何显示他们的计数。例如,如果我放入“aasssddeefgt”,它说s发生次数最多,但它并不告诉我它发生了3次。谁能帮忙?
你在你的'map'计数。需要从那里带走它们。为什么不只是返回另一个Map而不是List呢? – Thilo 2014-09-02 01:35:46
删除'List occurrences'并使用您的代码,以便它不使用发生,只需使用地图。你想要的值是在地图 –
2014-09-02 01:37:00
你可以请帮助通过修改代码? – 2014-09-02 01:48:49