一个字符串模拟,要求输出一段话中出现最多次的单词。
用一个map即可
修改后简洁版,看上去就更有可读性
#include<bits/stdc++.h>
#define rep(i,a,n) for(int i=a;i<n;i++)
#define sca(x) scanf("%d",&x)
#define ll long long
#define PII pair<int,int>
#define fi first
#define se second
#define INF 0x3f3f3f3f
using namespace std;
const int maxn=1e5+5;
string s;
map<string,int>m;
int main(){
getline(cin,s);
string t;
rep(i,0,s.length()){
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')
t+=(s[i]-'A'+'a');
else
t+=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(t!="")
m[t]++;
t="";
}
}
string ans;
int mx=-1;
for(auto u=m.begin();u!=m.end();u++){
if(u->se>mx){
ans=u->fi;
mx=u->se;
}
}
cout<<ans<<" "<<mx<<endl;
}