#include <iostream>
#include "string"
#include "cstdio"
#include "map"
using namespace std;

int main() {
    string str;
    map<char, int> numbers;
    for (char c = 'A'; c <= 'Z'; c++) {
        numbers.insert(pair<char, int> {c, 0});
    }


    while (cin >> str) {
        for (int i = 0; i < str.length(); i++) {
            numbers[str[i]]++;
        }
        for (char c = 'A'; c <= 'Z'; c++) {
            printf("%c:%d\n", c, numbers[c]);
        }



    }






    return 0;
}

看到 题解里 创建一个128大小的数组,利用ASCLL码的特性,遍历读来的字符串,然后再输出数组里A 到 Z的部分就可以了

题解方法很好,应该积累

我用的是map,这样时间复杂度也会很低, n的时间复杂度

不建议用双重循环,n2复杂度