给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多。

输入格式
输入包含一行,一个字符串,长度不超过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遍历,大于当前的就替换当前,小于等于的就略过。)