题目描述
给定一个只包含大写字母的字符串 S,请你输出其中出现次数最多的字母。
如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母。
输入格式
一个只包含大写字母的字符串 S。
输出格式
若干个大写字母,代表答案。
数据范围
对于 100% 的评测用例,1≤|S|≤106。
输入样例:
BABBACAC
输出样例:
AB
Java代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Map<Character, Integer> map = new TreeMap();//按照key排序的map集合,防止后面再次排序
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String str = buf.readLine();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(map.containsKey(ch)){//如果集合包含这个元素,则让其value+1
map.put(ch, map.get(ch)+1);
}else{
map.put(ch, 1);//否则把他放入集合中
}
}
int max = 1;
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if(max < entry.getValue()){
max = entry.getValue();//找到最大的value
}
}
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if(entry.getValue() == max){
System.out.print(entry.getKey());//根据最大的value输出key值
}
}
}
}