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真就比谁的脑洞大呗)

相关推荐
圣保罗的大教堂9 天前
1097 Deduplication on a Linked List (25)
pat考试
圣保罗的大教堂13 天前
1089 Insert or Merge (25)
pat考试
圣保罗的大教堂16 天前
1081 Rational Sum (20)
pat考试
圣保罗的大教堂16 天前
1083 List Grades (25)
pat考试
圣保罗的大教堂20 天前
1074 Reversing Linked List (25)
pat考试
圣保罗的大教堂1 个月前
1052 Linked List Sorting (25)
pat考试
圣保罗的大教堂1 个月前
1047 Student List for Course (25)
pat考试
圣保罗的大教堂2 个月前
1028 List Sorting (25)
pat考试
哈哈,柳暗花明2 个月前
软件设计师笔记-数据结构
pat考试
绯樱殇雪2 个月前
编程题 7-29 删除字符串中的子串【PAT】
c++·pat考试