输入一个字符串,以回车结束(字符串长度不超过 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 <iostream>
#include <string>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;
}
本题要特别注意吧情况考虑完全,即需要替换的单词可能在开头,可能在结尾,也可能在中间。