题意:给定一段文字,判断文中最多的字母串有多少个
思路:一开始想复杂了,其实就是把字母和数字构成的串连接起来,当碰到其他符号时,表示这个字符串已经结束,把这个字符串加入map集合中,最后对于大写的要换成小写的,还有就是对于最后一个的处理,当到达最后一个字符时,不管什么都要加入集合了。
代码:
#include<iostream>
#include<string>
#include<cctype>
#include<map>
using namespace std;
int main() {
string t, s;
getline(cin, s);//读取一行字符
map<string, int> mp;
for (int i = 0; i < s.length(); i++) {
if (isalnum(s[i])) {
s[i] = tolower(s[i]);
t += s[i];
}
if (!isalnum(s[i]) || i == s.length() - 1) {
if (t.length() != 0)mp[t]++;
t = "";
}
}
int maxn = -1;
for (auto it = mp.begin(); it != mp.end(); it++) {
if (it->second > maxn) {
t = it->first;
maxn = it->second;
}
}
cout << t << " " << maxn << endl;
system("pause");
return 0;
}