一、问题
给定一个单词,请找到出现最多的字母和这个字母出现的次数。
二、输入描述
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
三、输出描述
输出两行
第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
四、输出示例
- 输入:lanqiao
输出:
- 输入:longlonglongistoolong
输出:
五、要求
- 最大运行时间:1s
- 最大运行内存: 256M
六、分析
因为输入得字母都是小写字母,所以我们可以考虑用数组储存26个小写字母,通过ASCll码值作为数组下标,例如输入的是abc,我们可以通过字符串方法charAt(0)获取a的字符,然后再用’a’-'a’得到字符相差的整数,刚好把这个整数作为数组的下标储存,数组里面的值则++记录字母出现的次数。
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
//出现字母次数最多的值
int max = 0;
char c = 'a';
//初始化一个长度为26的数组
int[] arr = new int[26];
for (int i = 0; i < str.length(); i++){
//通过两个字符差作为数组下标,统计字符出现的次数
arr[str.charAt(i)-'a']++;
}
//找出重复字符出现最多的索引位置
for (int j = 0; j < str.length(); j++){
if (arr[j] > max){
max = arr[j];
//还原字符
c = (char)(j + 'a');
}
}
System.out.println(c);
System.out.println(max);