题解 | 单词替换
单词替换
https://www.nowcoder.com/practice/5b58a04679d5419caf62c2b238e5c9c7
#include<iostream>
using namespace std;
/*
输入:
You want someone to help you
You
I
输出:
I want someone to help you
思考:用双指针确定每个单词
i指向单词首字母
j指向单词末尾后的空格 You _
i j
*/
int main() {
string s, a, b;
int i, j = 0;
getline(cin, s);
cin >> a >> b;
while (j < s.size()) {
i = j; //j指针从与i相同的位置出发
while (s[j] != ' ' && j < s.size()) {
j++; //j扫描到字符则继续自增,遇到空格则跳出循环
}
string str = s.substr(i, j - i); //使用substr截取单词
if (str == a) {
s.replace(i, a.length(), b); //替换
j = i + b.length() + 1; //替换成功后,字符串的长度发生变化,需要更新j的位置,防止并发修改异常
}else{
j++;
}
}
cout << s;
return 0;
}
