题目链接:
描述:判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多
输入:第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串。每组测试数据之间有一个空行,每行数据不超过1000个字符且非空
输出:n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符。
解题思路:将出现次数用一个数组存储,选出最大的数组中最大数的下标,输出该下标对应的字母,和次数即可
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
int n=input.nextInt();
while(n>0){
input.nextLine();
String str=input.nextLine();
int[] lists=new int[26];
//下面的循环对输入的字符进行遍历,对每个字符进行计数
for(int i=0;i<str.length();i++){
if(str.charAt(i)>='a'&&str.charAt(i)<='z'){
lists[str.charAt(i)-'a']++;
}
}
//选出最大值
int max=0;
int maxIndex=0;
for(int i=0;i<26;i++){
if(lists[i]>max){
max=lists[i];
maxIndex=i;
}
}
//输出
char a=(char) (maxIndex+'a');
System.out.println(a+" "+lists[maxIndex]);
n--;
}
input.close();
}
}