Skip to content

1042 字符统计

Statement

Metadata

  • 作者: CHEN, Yue
  • 单位: 浙江大学
  • 代码长度限制: 16 KB
  • 时间限制: 400 ms
  • 内存限制: 64 MB

请编写程序,找出一段给定文字中出现最频繁的那个英文字母。

输入格式

输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。

输出格式

在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。

输入样例

This is a simple TEST.  There ARE numbers and other symbols 1&2&3...........

输出样例

e 7

Solution

#include <cctype>
#include <cstring>
#include <iostream>
int main() {
    int n, i, num[128] = {0};
    char c;
    while (scanf("%c", &c) && c != 10) {
        n = c;
        if (c >= 'a' && c <= 'z') {
            num[n]++;
        } else if (c >= 'A' && c <= 'Z') {
            n += 32;
            num[n]++;
        }
    }
    int m = 0;
    int flag;
    for (i = 97; i < 123; i++) {
        if (m < num[i]) {
            m = num[i];
            flag = i;
        } else if (m == num[i]) {
            if (flag > i) {
                m = num[i];
                flag = i;
            }
        }
    }
    printf("%c %d\n", flag, m);
    return 0;
}

Last update: May 4, 2022
Back to top