题目
给定一个文本串 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;
} 
京公网安备 11010502036488号