小白想请教一下,
这道题目是PAT甲级1071 Speech Patterns PTA1071
不知道为什么自己最后一个测试点报段错误。
#include<bits/stdc++.h>
//#define inf 0x3f3f3f
using namespace std;
string s1;
map<string,int> mp;
bool judge(char ch){
if(ch>='0'&&ch<='9') return true;
if(ch>='a'&&ch<='z') return true;
if(ch>='A'&&ch<='Z') return true;
return false;
}
int main(){
getline(cin,s1);
int len=s1.length();
int sta,cur=0;
bool flag=false;
string s2=s1;
while(cur<=len){
while(!judge(s1[cur])){
cur++;
}
if(cur>len) break;
//now cur point to char
sta=cur;
while(judge(s1[cur])){
cur++;
if(cur>len){break;}
}
if(cur>len) break;
s2=s1.substr(sta,cur-sta);
for(int i=0;i<s2.length();i++){
if(s2[i]>='A'&&s2[i]<='Z'){
s2[i]=s2[i]-'A'+'a';
}
}
if(mp.find(s2)==mp.end()){
mp[s2]=1;
}
else{
mp[s2]++;
}
}
map<string,int>::iterator ite;
string k=s1;
int maxx=-1;
for(ite=mp.begin();ite!=mp.end();++ite){
if(ite->second>maxx){
maxx=ite->second;
k=ite->first;
}
// cout<<ite->first<<" "<<ite->second<<endl;;
}
cout<<k<<" "<<maxx<<endl;
return 0;
}