解题思路:


先把每个字符当做唯一出现,再除去相同字母的排列次数



注意事项:


在输入的时候,记录出现字符最多的次数,并将每个字符以及其次数用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.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

小鸿很平凡 2年前 回复TA
@Lee1989 比我的简单一点
Lee1989 2年前 回复TA
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++) {