题目
给定一个文本串 s,再给两个串 a、b,文本串中的 a 都转换成 b,转换后的字符不再参与转换,输出最终的文本串。
解题思路
先在文本串 s 中寻找子串 a,记录下标。
然后,从右向左将文本串 s 中的子串 a 替换成 b。
C++代码
#include<iostream> #include<vector> using namespace std; int main(){ string s, a, b; cin >> s >> a >> b; vector<int> indices; int m = a.size(); int start = 0; int k = 0; for(int i=0; i<s.size(); ++i){ if(s[i]==a[k]){ ++k; if(k==m){ indices.push_back(start); k = 0; start = i+1; } } else{ i = start; ++start; k = 0; } } for(int i=indices.size()-1; i>=0; --i){ s.replace(indices[i],m,b); } cout << s << endl; return 0; }