题目描述
给定一个只包含大写字母的字符串 S,请你输出其中出现次数最多的字母。
如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母。
输入格式
一个只包含大写字母的字符串 S .
输出格式
若干个大写字母,代表答案。
样例输入
复制
BABBACAC
样例输出
复制
AB
提示
对于 100% 的评测用例,1 ≤ |S | ≤ 106 .
要求
时间限制: 2s 内存限制: 576MB
代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//创建扫描器
Scanner sc = new Scanner(System.in);
//读取字符串
String S = sc.nextLine();
//获取字符串长度
int length = S.length();
//定义一个高级计数器
int[] counts = new int[26];
//关闭扫描器
sc.close();
//通过减去'A'来保证索引为对应的字母编号(非ASCII),从而对每一个字母进行计数
for (int i = 0; i < length; i++) {
counts[S.charAt(i) - 'A']++;
}
//之后找出最大值
int max = 0;
//找出出现次数最多的字母的出现次数
for (int i = 0; i < counts.length; i++) {
//为了不改变原来数组的索引所对应的值
int count = counts[i];
if (count > max) {
max = count;
}
}
//输出出现次数最多的字母的索引,并转化为为字母。
for (int i = 0; i < counts.length; i++) {
if (counts[i] == max) {
System.out.print((char) ('A' + i));
}
}
}
}