您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页九度[1111]-单词替换

九度[1111]-单词替换

来源:意榕旅游网

九度[1111]-单词替换

题目描述:
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

输入
多组数据。每组数据输入包括3行,
第1行是包含多个单词的字符串 s,
第2行是待替换的单词a,(长度<=100)
第3行是a将被替换的单词b。(长度<=100)
s, a, b 最前面和最后面都没有空格.

输出
每个测试数据输出只有 1 行,
将s中所有单词a替换成b之后的字符串。

样例输入
You want someone to help you
You
I

样例输出
I want someone to help you

解题思路:
字符串操作,用的STL的string
(文末链接是另一个思路,注意字符串加空格的思路比较巧妙,且最后需要cin.get()吸收回车)

AC代码-1:

#include <cstdio>
#include <string>
#include <iostream>
#include <vector>
using namespace std;
string input, init, rep;
vector<string> vec;

int main(){
    freopen("C:\\Users\\Administrator\\Desktop\\test.txt", "r", stdin);
    while(getline(cin, input)){
        getline(cin, init);
        getline(cin, rep);
        string::size_type idxs = 0, idxe;
        while(1){
            idxe = input.find(" ", idxs);
            if(idxe != string::npos){
                vec.push_back(input.substr(idxs, idxe-idxs));
            }
            else {
                vec.push_back(input.substr(idxs));
                if(idxe == string::npos) break;
            }
            idxs = idxe+1;
        }
        for(int i = 0; i < vec.size(); i++){
            if(vec[i] == init){
                cout<<rep;
            }
            else cout<<vec[i];
            if(i < vec.size() - 1) cout<<" ";
        }
        cout<<endl;
        vec.clear();
    }
    fclose(stdin);
    return 0;
}

AC代码-2

#include <string>
#include <iostream>
using namespace std;

int main(){
    string s, a, b;
    freopen("C:\\Users\\Administrator\\Desktop\\test.txt", "r", stdin);
    while(getline(cin, s)){
        cin>>a>>b;
        string::size_type idxs = 0, idxe = s.find(" ", idxs);
        while(idxe != string::npos){
            //cout<<"idxs: "<<idxs<<" idxe: "<<idxe<<" "<<s.substr(idxs, idxe-idxs)<<endl;
            if(s.substr(idxs, idxe-idxs) == a) s.replace(idxs, a.size(), b);
            idxs = idxe+1;
            idxe = s.find(" ", idxs);;
        }
        if(s.substr(idxs) == a) s.replace(idxs, a.size(), b);
        cout<<s<<endl;
        cin.get();
    }
    fclose(stdin);
    return 0;
}


因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务