\quad 主要是要注意单词的定义,最后一个字符不管是不是字母数字都要算作单词,不然最后一个测试点过不了,这个定义在题目倒数第二句话:Here a word is defined as a continuous sequence of alphanumerical characters separated by non-alphanumerical characters or the line beginning/end.用map统计词频就好啦,注意切分单词。
#include <bits/stdc++.h>
using namespace std;
map<string, int> m;
int main(int argc, char const *argv[])
{
string s, temp;;
getline(cin, s);
for (int i = 0; i < s.length(); ++i)
{
if((s[i]>='a'&&s[i]<='z') || (s[i]>='A'&&s[i]<='Z') || (s[i]>='0'&&s[i]<='9'))
{
if(s[i]>='A' && s[i]<='Z') temp += s[i]+'a'-'A';
else temp += s[i];
}
if(!((s[i]>='a'&&s[i]<='z') || (s[i]>='A'&&s[i]<='Z') || (s[i]>='0'&&s[i]<='9')) || i==s.length()-1)
{
if(temp=="") continue;
m[temp] ++;
temp = "";
}
}
string res;
int maxCount = 0;
map<string, int>::iterator it;
for(it=m.begin(); it!=m.end(); it++)
{
if(it->second > maxCount)
{
res = it->first;
maxCount = it->second;
}
}
cout << res << " " << maxCount << endl;
return 0;
}