单词统计
时间限制: 1 Sec 内存限制: 128 MB
题目描述
编写一个程序,根据单词的出现频率降序打印出所输入的的各个单词。每个单词前标有它的计数值。
输入
各个单词,输入0则表示单词结束
输出
降序打印单词出现的频率和单词。单词频度相同,按出现顺序输出。
样例输入
1 2 3 4 5 6 7 8 | bad good bad cute how good good 0 |
样例输出
1 2 3 4 | 3 good 2 bad 1 cute 1 how |
提示
解决方案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <iostream> #include <string> #include <vector> #include <algorithm> struct Pair { std::string string; int count; Pair(std::string &string, int count) : string(string), count(count) {} }; bool operator==(Pair &pair, const std::string &string) { return pair.string == string; } bool operator<(const Pair &lhs, const Pair &rhs) { return lhs.count > rhs.count; // NG } int main() { std::vector<Pair> vector; std::string string; std::cin >> string; while (string != "0") { std::vector<Pair>::iterator it = std::find(vector.begin(), vector.end(), string); if (it != vector.end()) { it->count += 1; } else { vector.push_back(Pair(string, 1)); } std::cin >> string; } std::sort(vector.begin(), vector.end()); for (int i = 0; i < vector.size(); ++i) { std::cout << vector[i].count << ' ' << vector[i].string << std::endl; } return 0; } |