题目:给定一个只包含大写字母的字符出 S, 请你输出其中出现次数最多的字符。如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。
输入格式
一个只包含大写字母的字等串 S.
输出格式
若干个大写字母,代表答案。
样例输入
BABBACAC
样例输出
AB
评测用例规模与约定
对于 100%100% 的评测用例, 1≤∣S∣≤1061≤∣S∣≤106.
解题思路+代码:
代码:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {public static void main(String[] args) {/**思路:1.获取字符串S2.创建数组,存放26个字母3.对26个字母的次数进行判断 对最大次数的字母进行输出*/Scanner scan = new Scanner(System.in);String S = scan.next(); // 获取字符串Sint[] res = new int[26]; //存放26个字母char[] ch = S.toCharArray(); //转换为字符for(int i = 0; i<ch.length; i++){res[ch[i] - 'A']++; //记录每个字母出现的次数}int max = 0; //方便更新最大值for(int i = 0; i<26; i++){max = Math.max(max,res[i]); //记录字母出现的最多次数}for(int i = 0; i<26; i++){if(res[i] == max){System.out.print((char)(i + 'A')); //循环输出}}}
}
总结:解答这道题可以使字符串转字符(这里提及一下toCharArray和tocharAt的区别:toCharArray()
:作用:将字符串转换为一个字符数组(char[]
)。返回值:返回一个字符数组,数组中的每个元素是字符串中的一个字符。 charAt(int index)
:作用:获取字符串中指定索引位置的字符。参数:index
,表示字符在字符串中的索引位置(从 0 开始)。返回值:返回指定索引位置的单个字符。)对每个字符进行计数,用max接收字母出现的最多次数,循环26个字母数组后再判断每个字母出现的次数与最多次数是否相等,相等即输出。