单词统计(I)
描述
给定一段文章,每行不超过1000个字符,统计文章中每个单词出现的频率,忽略大小写差异。为了简化问题,文章中只有英文字母和空白字符,没有标点符号和特殊符号。
输入
第一行为一个整数T,表示数据的组数。 对于每组数据以一个独占一行的“#”结束。
输出
对于每组测试数据: 第一行为一个整数n表示文章中出现的单词的总数; 接下来n行按字母序从小到大输出文章中出现的单词(全部以大写字母表示)和出现的次数。
输入样例 1
2 Hello World # Abc abc cde aa bb cc aas test #
输出样例 1
2 HELLO 1 WORLD 1 7 AA 1 AAS 1 ABC 2 BB 1 CC 1 CDE 1 TEST 1
提示
HINT 时间限制:200ms 内存限制:64MB
#include <iostream>
#include <map>
#include <cctype>
#include <string>
#include <vector>
#include <algorithm>
int main() {
int T;
std::cin >> T;
std::cin.ignore();
while (T--) {
std::map<std::string, int> word_count;
std::string line;
while (std::getline(std::cin, line) && line != "#") {
std::string word = "";
for (char c : line) {
if (isalpha(c)) {
word += toupper(c);
} else if (!word.empty()) {
word_count[word]++;
word = "";
}
}
if (!word.empty()) word_count[word]++;
}
std::vector<std::pair<std::string, int>> words(word_count.begin(), word_count.end());
std::sort(words.begin(), words.end());
std::cout << words.size() << std::endl;
for (const auto& p : words) {
std::cout << p.first << " " << p.second << std::endl;
}
}
return 0;
}
994

被折叠的 条评论
为什么被折叠?



