(阅读理解题,刷了这么多pat,感觉代码水平没升多少,英语水平倒是有了些许提升,回头考个六级试试水平呵呵呵。)
思路:题目本身没什么好说的,一个哈希表记录单词,然后关键就是怎么分割单词了。我有一计,可以很方便地将单词分割出来:我们可以将除了数字与英文字母的所有其他字符替换成空格,并且将字符全换成小写,然后将处理后的字符串传入stringstream字符流中,这样就可以一个单词一个单词地读取了。
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
getline(cin,s);
int n=s.size();
for(int i=0;i<n;i++){
if(s[i]>='A'&&s[i]<='Z')s[i]+='a'-'A';
}
map<string,int>mp;
stringstream ss;
for(int i=0;i<n;i++){
if(!isalpha(s[i])&&!isdigit(s[i])){
s[i]=' ';
}
}
ss<<s;
string res;
while(ss>>res){
mp[res]++;
}
int mx=0;
string word;
for(auto x:mp){
if(x.second>mx){
word=x.first;
mx=x.second;
}
}
cout<<word<<' '<<mx;
}
(为什么说是阅读理解题?初看题目与样例,我还以为只需要判定引号里面的单词才行,于是写一堆边界判定,一交,嘎,就过一个测试点。一直改一直找是哪出了问题,改了一个多小时,放弃了,看别人写地代码,哦,不用管引号,啪得一下把乱七八糟的判定什么的全删了,直接过了,还更简单了,服,pat真就比谁的脑洞大呗)