蒜厂秘籍(map)

题目思路:用STL中的map

学到的东西 string的迭代器是auto  ,一整行的输入getline(cin,string)

代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
    string start1;cin>>start1;
    string x,y;
    map<string, string> m;
    while (true) {
        cin>>x;
        if (x=="END") {
            break;
        }
        cin>>y;
        m[y]=x;
    }
    string start2;
    getline(cin,start2);//吸收\n
    string sentences="";
    while (true) {
        string line;getline(cin,line);
        if (line=="START")  continue;
        if (line=="END")  break;
        string words="";
		
        for (auto i =line.begin();i!=line.end();i++) {
            if (isalpha(*i))  words+=*i;
    		else {
                if (words!="") {
                    if(m.count(words)) sentences+=m[words];
                    else sentences+=words;
                }
                sentences+=*i;//句子加上非字母的
                words.clear();//清空words
            }   
        }
        if (words!="") {//处理最后以单词结尾的
                if(m.count(words)) sentences+=m[words];
                else sentences+=words;
            }
            sentences+='\n';
    }
    cout<<sentences;  
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值