class Solution {
public:
string findReplaceString(string S, vector<int>& indexes, vector<string>& sources, vector<string>& targets) {
int n=indexes.size();
vector<int> id(n);
for(int i=0;i<n;i++) id[i]=i;
sort(id.begin(),id.end(),[&](int a,int b){
return indexes[a]<indexes[b];
});
for(int i=n-1;i>=0;i--){
int k=id[i];
int j=indexes[k],l=sources[k].size();
if(S.substr(j,l)==sources[k])
S=S.substr(0,j)+targets[k]+S.substr(j+l);
}
return S;
}
};
从后往前替换字符串,避免坐标变换。