1071 Speech Patterns (25 分)

mac2026-02-19  9

1071 Speech Patterns (25 分)

题目入口: https://pintia.cn/problem-sets/994805342720868352/problems/994805398257647616

思想

注意处理结尾边界情况 使用map记录每个符合条件的单词出现个数 isalnum判断是否为数字或字母 tolower转换字母为小写 迭代器的使用查找最频繁单词 使用string比较单词字典序大小 到这里讲解结束

代码

#include <iostream> #include <unordered_map> #include <cstdio> #include <cctype> #include <string> using namespace std; unordered_map<string, int> mp; int main(){ string ori, word = ""; getline(cin, ori); for (int i = 0; i < ori.size(); i++){ if (isalnum(ori[i])){ word += tolower(ori[i]); if (i == ori.size()-1){ mp[word]++; word = ""; } } else { if (word != ""){ mp[word]++; word = ""; } } } int Max = -1, once = 0; string ret = ""; unordered_map<string, int>::iterator it; for (it = mp.begin(); it != mp.end(); it++){ if (it->second == Max){ if (!once){ ret = it->first; once = 1; } else if (it->first < ret) ret = it->first; } else if (it->second > Max){ Max = it->second; ret = it->first; } } cout << ret << " " << Max << endl; return 0; }
最新回复(0)