C++ 单词替换

输入一个字符串,以回车结束(字符串长度不超过 100
)。

该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。

现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

输入格式
输入共 3
行。

第 1
行是包含多个单词的字符串 s
;

第 2
行是待替换的单词 a
(长度不超过 100
);

第 3
行是 a
将被替换的单词 b
(长度不超过 100
)。

输出格式
共一行,输出将 s
中所有单词 a
替换成 b
之后的字符串。

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

#include 
#include 

using namespace std;

int main ()
{
    string a, b, c;
    getline(cin, a);
    cin>>b>>c;
    int lenb = b.size();
    if(a == b)
            cout<<c<<endl;
    else {
        for(int i = 0; i < a.size(); i++) {
                if(a[i] == b[0]) {
                string tmp = a.substr(i, lenb);
                if(i == 0) {
                   if(tmp == b && a[i + lenb] == ' '){
                        a.replace(i, b.size(), c);
                    } 
                }
                else if(i > 0 && i < a.size() - b.size()){
                    if(tmp == b && a[i + lenb] == ' ' && a[i - 1] == ' ') {
                        a.replace(i, b.size(), c);       
                    }
                }
                else {
                    if(tmp == b && a[i - 1] == ' ') {
                        a.replace(i, b.size(), c);       
                    }
                }
            }
            }
            cout<<a<<endl;
    }

    return 0;
}

本题要特别注意吧情况考虑完全,即需要替换的单词可能在开头,可能在结尾,也可能在中间。

你可能感兴趣的:(力扣,c++,字符串)