题解 | 单词替换

单词替换

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;

}

全部评论

相关推荐

牛客96931767...:这履历不是在网安横着走啊
大家都开始春招面试了吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务