算法主要分为两个步骤:从给定字符串中分割出“单词”、计数出现次数最多的单词。
string s;
unordered_map<string,int> mp;
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;
}
int main()
{
getline(cin,s);
for(int i=0;i<s.size();i++)
{
if(check(s[i]))
{
string word;
int j=i;
while(j<s.size() && check(s[j])) word+=tolower(s[j]),j++;
mp[word]++;
i=j;
}
}
string res;
for(auto t:mp)
{
if(!res.size()) res=t.fi;
else if(t.se > mp[res]) res=t.fi;
else if(t.se == mp[res] && t.fi < res) res=t.fi;
}
cout<<res<<‘ ‘<<mp[res]<<endl;
//system("pause");
return 0;
}
原文:https://www.cnblogs.com/fxh0707/p/14354438.html