#include<iostream>
#include<vector>
/*
You want someone to help you
You
I

I want someone to help you
*/

using namespace std;
int main() {
    string s, taget, replace;
    int i = 0, j = 0;
    getline(cin, s);
    cin >> taget >> replace;
    vector<string> svec;

    while (j < s.size()) {
        j = i;
        while (j < s.size() && s[j] != ' ') {
            j++;
        }
        string t = s.substr(i, j - i); //切分单词
        svec.push_back(t);          //所有单词存入vector数组
        i = j + 1;
    }

    for (int i = 0; i < svec.size(); i++) {
        if (svec[i] == taget) {
            svec[i] = replace;
        }
    }
    for (int i = 0; i < svec.size(); i++) {
        cout << svec[i];
        if (i != svec.size() - 1) {
            cout << " ";
        }
    }

    return 0;
}

思路:

双指针遍历字符串,以截取每个单词,将每个截取的单词push_ back到vector<string>类型的数组中。

所有单词均存入数组后

遍历数组,并比较数组中每个元素与待替换单词,匹配成功则直接将其替换。