解题思路:
先把每个字符当做唯一出现,再除去相同字母的排列次数
注意事项:
在输入的时候,记录出现字符最多的次数,并将每个字符以及其次数用HashMap存储。再次遍历HashMap,将出现次数等于最多的加入到一个TreeSet中,最后TreeSet能维持字典序,输出TreeSet元素为答案
参考代码:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Main{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String string = scanner.next();
Map<Character, Integer> map = new HashMap<>();
int ans_count = Integer.MIN_VALUE;
for(int i=0;i<string.length();i++) {
char c = string.charAt(i);
if(map.get(c)==null) {
map.put(c, 1);
}else {
map.put(c, map.get(c)+1);
}
if(map.get(c)>ans_count) {
ans_count=map.get(c);
}
}
Set<Character> ansCharacters = new TreeSet<>();
for(Map.Entry<Character, Integer> entry:map.entrySet()) {
if(entry.getValue()==ans_count) {
ansCharacters.add(entry.getKey());
}
}
for(Character c:ansCharacters) {
System.out.print(c);
}
}
}0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String s = scanner.next(); char[] cArr = s.toCharArray(); int[] count =new int[26]; for (int i = 0; i < cArr.length; i++) { byte b = (byte)cArr[i]; count[b-65]++; } int[] countCopy = Arrays.copyOf(count,count.length); Arrays.sort(countCopy); int maxCount = countCopy[countCopy.length-1]; for (int i = 0; i < count.length; i++) {