题解 | #单词替换#
单词替换
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; }