【简化题意】
给出一些字符串。求所有字符串中出现最多的字符串和出现次数。
时限3s
【分析】
map+string就可以水过这道题了,但貌似不是正解?
据说如果出一堆很长的字符串就可以把string卡掉(string按位比较速度较慢)。所以我们还有如下两种办法。
法一
Hash代替直接的string比较,离线排序或者在线map皆可。
法二
Trie树统计。一种非常正常的解法。
【code】
还是map水过算了
#include<map>
#include<string>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
map<string,int>mp;
string ans1;int ans2=0;
int n;
int main(){
freopen("count.in","r",stdin);
freopen("count.out","w",stdout);
cin>>n;
string s;
for(int i=1;i<=n;i++){
cin>>s,mp[s]++;
if(ans2<=mp[s]) ans2=mp[s],ans1=s;
}
cout<<ans1<<" "<<ans2<<endl;
return 0;
}