问题描述
给定一个只包含大写字母的字符出S,请你输出其中出现次数最多的字符。如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母。
输入格式
一个只包含大写字母的字等串s.
输出格式
若干个大写字母,代表答案。
样例输入
BABBACAC
样例输出
AB
评测用例规模与约定
对于100%的评测用例,1≤|S|≤106.
运行限制
·最大运行时间:1s·最大运行内存: 512M
方法一:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
HashMap<Character,Integer> map=new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c=s.charAt(i);
//put是放入key=c
//getOrDefault(c,0)如果没有这个c,我就返回0
map.put(c,map.getOrDefault(c,0)+1);
}
//用来存答案
ArrayList<Character> list=new ArrayList<>();
//记录出现最多的字符出现了多少次
int max=0;
//key 存放的字符
for (Character key : map.keySet()) {
int x = map.get(key);
if (x>max){
list.clear();
list.add(key);
max=x;
}else if (x==max){
list.add(key);
}
}
Collections.sort(list);
for (Character character : list) {
System.out.print(character);
}
}
}
方法二:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
static int[] cnt=new int[26];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
//统计字符每次出现的次数
for (int i = 0; i < s.length(); i++) {
char c=s.charAt(i);
cnt[c-'A']++;
}
List<Integer> list=new ArrayList<>();
int max=0;
for (int i = 0; i < cnt.length; i++) {
if (cnt[i]>max){
list.clear();
list.add(i);
max=cnt[i];
}else if (cnt[i]==max){
list.add(i);
}
}
for (Integer ch : list) {
System.out.print((char)(ch+'A'));
}
}
}