1071 Speech Patterns (巧用字符流逃课)

(阅读理解题,刷了这么多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真就比谁的脑洞大呗)

相关推荐
不是小盆友3 天前
零基础上岸高项丨经验分享
经验分享·软件工程·pat考试·软考高级·软考·软考高项·苏景一软考
周Echo周19 天前
8、STL中的map和pair使用方法
开发语言·数据结构·c++·考研·算法·leetcode·pat考试
圣保罗的大教堂2 个月前
1170 Safari Park (25)
pat考试
圣保罗的大教堂3 个月前
1166 Summit (25)
pat考试
圣保罗的大教堂3 个月前
1164 Good in C (20)
pat考试
圣保罗的大教堂3 个月前
1161 Merging Linked Lists (25)
pat考试
圣保罗的大教堂3 个月前
1156 Sexy Primes (20)
pat考试
圣保罗的大教堂3 个月前
1150 Travelling Salesman Problem (25)
pat考试
圣保罗的大教堂3 个月前
1133 Splitting A Linked List (25)
pat考试
圣保罗的大教堂4 个月前
1097 Deduplication on a Linked List (25)
pat考试