题目描述

给定一个只包含大写字母的字符串 S,请你输出其中出现次数最多的字母。

如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母。

输入格式

一个只包含大写字母的字符串 S .

输出格式

若干个大写字母,代表答案。

样例输入

BABBACAC

样例输出

AB

提示

对于 100% 的评测用例,1 ≤ |S | ≤ 106 .

思路

定义一个长度为26的数组,作为计数器,分别对应AZ,记录AZ每个字母出现的次数

然后输出最大值a【i】

特殊情况:

若两个及以上字母出现次数均为max,则可利用for循环,对max之后的a【i】与max进行比较,a【i】的顺序也正好为字典序,符合题意。

代码实例

import java.util.Scanner;

public class Lanqiao2672 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.next(); //键盘录入字符串S
int a[]=new int[26]; //定义一个长度为26的数组记录每个字母出现的次数

//将每个字符分别与A~Z进行比较,ASCII值相等的对应数组a【i】++;
for (int i = 0; i < s.length(); i++){
for (int j = 65; j < 91; j++) {
if((int)s.charAt(i)==j)
a[j-65]++;
}
}
//求出数组a的最大值
int max=a[0];
int maxi=0;
for (int i = 1; i < a.length; i++) {
if (a[i] > max) {
max = a[i];
maxi = i;
}
}
//判断最大值相等情况,按照字典序输出则正好按照a【i】i值由小到大排列
for (int i = maxi; i < a.length; i++) {
if(a[i]==a[maxi]){
System.out.print((char)(i+65));
}
}

}
}

结果实例

pCgUpkQ.png