AcWing 1557. 说话方式-双指针 哈希表
原题链接
简单
作者:
记_得
,
2021-07-19 13:14:02
,
所有人可见
,
阅读 433
#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>
using namespace std;
int main()
{
string s;
getline(cin,s);
for(auto &c:s) //先转化为小写
if(c>='A'&&c<='Z')
c+=32;
unordered_map<string,int> ans;
for(int i=0;i<s.size();i++) //双指针提取单词
{
int j=i;
string res="";
while((s[j]>='a'&&s[j]<='z')||(s[j]>='0'&&s[j]<='9'))
{
res+=s[j];
j++;
}
if(!res.empty()) ans[res]++; //插入哈希表
i=j;
}
string ret;
int maxi=0;
for(auto [k,v]:ans) //遍历哈希表
{
if(v>maxi)
{
maxi=v;
ret=k;
}
if(v==maxi&&ret>k) //如果次数相同则按照字典序
{
ret=k;
}
}
cout << ret << ' ' << maxi << endl;
return 0;
}