题解 | #单词替换#

单词替换

https://www.nowcoder.com/practice/5b58a04679d5419caf62c2b238e5c9c7

#include "iostream"
#include "string"
using namespace std;

int main() {
    // Define:
    string str,find, sub;
    int place, startPos = 0;
    // Input:
    getline(cin, str);                     // 获取第一行数据
    cin >> find >> sub;                    // 获取查找及替换单词
    // 预处理:
    str = ' ' + str + ' ';                 // 前后补空格,用于后续判断find找到的是否是单词
    place = str.find(find, startPos);      // 查找 find(待查找,起始点)
    while (place != string::npos) {        // 如果找到了,后续还能查到
        if (str[place + find.size()] == ' ' && str[place - 1] == ' ') { // 判断是否是单词(判断查找到的单词前后是否都是空格)
            str.erase(place, find.size()); // 删除原单词
            str.insert(place, sub);        // 插入新单词
        }
        place = str.find(find, startPos + place + find.size());         // 从新的起始点继续查找
    }
    // output:
    for (int i = 1; i < str.size() - 1; ++i) cout << str[i];            // 前后空格不输出
    cout << endl;
    return 0;
}

全部评论

相关推荐

伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务