题意
令“单词”定义为大小写字母和数字的组合,给出一个字符串,问出现次数最多的单词机器出现的次数(一切除了大小写字母和数字之外的字符都作为单词的分隔符),其中字母不区分大小写,且最后按照小写字母输出。
思路:从给定的字符串中分割出“单词”,计数出现次数最多的单词(用map实现)
#include<iostream>
#include <string>
#include <algorithm>
#include <map>
using namespace std;
bool check(char c) {
if (c >= '0' && c <= '9') return true;
if (c >= 'A' && c <= 'Z') return true;
if (c >= 'a' && c <= 'z') return true;
return false;
}
void SpeechPatterns() {
map<string, int> res;
string str;
getline(cin, str);
for (int i = 0; i < str.size(); i++) {
if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] += 32;
}
}
for (int i = 0; i < str.size(); ) {
while (!check(str[i])&& i < str.size()) {
i++;
}
string temp;
while (check(str[i])&& i < str.size()){
temp += str[i];
i++;
}
res[temp]++;
}
pair<string, int> ans;
for (map<string, int>::iterator it = res.begin(); it != res.end(); it++) {
if (ans.second < it->second) {
ans.first = it->first;
ans.second = it->second;
}
}
cout << ans.first<<":"<<ans.second;
}
参考资料:算法笔记上机篇P250
版权声明:本文为HurryRabbit原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。