输入格式
输入包含一行,一个字符串,长度不超过1000。
输出格式
输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开。如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符。
#include <stdio.h>
#include <string.h>
int main() {
char str[1001];
int count[26] = {0};
int max_count = 0, max_index = -1;
int len, i;
// 输入
scanf("%s", str);
len = strlen(str);
// 统计出现次数
for (i = 0; i < len; i++) {
count[str[i] - 'a']++;
}
// 找出出现次数最多的字符和次数
for (i = 0; i < 26; i++) {
if (count[i] > max_count) {
max_count = count[i];
max_index = i;
}
}
// 输出
printf("%c %d\n", max_index + 'a', max_count);
return 0;
}
基本思路就是构建一个长度为26的数组,存储a-z这26个字符出现的次数(直接把该字母和a的ascii码相减,a就存储到count[0],以此类推),然后挨个找最大的(从a到z遍历,大于当前的就替换当前,小于等于的就略过。)