top1编程
← 返回题目
题解

【入门】字符统计

1 条题解

  • 0
    @ 2026-7-30 1:37:39

    解题思路

    用 26 个计数器统计字母,再按字母顺序输出非零计数,每五项换行。

    参考代码

    // 先读入题目给出的输入数据。
    // 用简单的循环完成题目要求。
    #include <iostream>
    using namespace std;
    
    int main() {
        int cnt[26] = {0};
        char c;
        while (cin.get(c) && c != '.') {
            if (c >= 'a' && c <= 'z') cnt[c - 'a']++;
        }
        int num = 0;
        for (int i = 0; i < 26; i++) {
            if (cnt[i] == 0) continue;
            // 每五项换一行,字母按从 a 到 z 的顺序输出。
            if (num > 0) cout << " ";
            cout << char('a' + i) << ":" << cnt[i];
            num++;
            if (num % 5 == 0) cout << endl;
        }
        if (num % 5 != 0) cout << endl;
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、数组、循环和判断。时间复杂度根据题目的枚举或扫描过程计算,额外空间主要是输入数组,空间复杂度为 O(n)。

    • 1