替换又不影响正常顺序,那就从后往前替换呗。
class Solution {
public:
string findReplaceString(string S, vector<int>& indexes, vector<string>& sources, vector<string>& targets) {
map<int, string> index2source;
map<int, string> index2target;
for (int i=0;i<indexes.size();i++){
index2source[indexes[i]] = sources[i];
index2target[indexes[i]] = targets[i];
}
sort(indexes.begin(), indexes.end());
for(int i=indexes.size()-1;i>=0;i--){
int index = indexes[i];
string source = index2source[index];
string target = index2target[index];
if (S.substr(index, source.size())==source){
string left = S.substr(0, index);
string right = S.substr(index+source.size(),S.size()-index-source.size());
S = left + target + right;
}
}
return S;
}
};