1.问题描述:
给定一个只包含大写字母的字符串S,请你输出其中出现次数最多的字母。如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母。
2.伪代码
1.获取输入对象和获取输出的字符串arr
2.创建存键值对的HashMap3.for(遍历数组arrr)
{
if (是否已经有这个键)
没有,创建,初始数量为1
else
有,修改,将这个键的数量加1}
4.将所有数量存入数组中,升序排序
5.遍历每一个键
6.If(如果这个键出现的次数等于数组中的最大值)
输出
3.代码展示
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //获取输入对象
String str = sc.next(); //获取输出的字符串
Map<Character,Integer> map = new HashMap<>(); //创建存键值对的Map
for (int i = 0; i < str.length(); i++) { //遍历字符串的每一个
if (!map.containsKey(str.charAt(i))){ //是否已经有这个键
map.put(str.charAt(i),1); //没有,创建,初始数量为1
}else{
map.put(str.charAt(i),map.get(str.charAt(i))+1); //有,修改,将这个键的数量加1
}
}
Object[] objects = map.values().toArray(); //将所有数量存入数组中
Arrays.sort(objects); //升序排序
for (char key:map.keySet()){ //遍历每一个键
if (map.get(key)==objects[objects.length-1]){ //如果这个键出现的次数等于数组中的最大值
System.out.print(key);//输出
}
}
}
}