#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复杂度