LeetCode -- 833. 字符串中的查找与替换 (延迟改变策略)
所谓延迟改变,可以是在应该改变的地方打一个标记,等把所有应该改变的地方都找到后,再进行操作。
class Solution { public: string findReplaceString(string s, vector<int>& indices, vector<string>& sources, vector<string>& targets) { int n = s.size(); vector<pair<string, int>> rep(n, {"", 1}); for(int i = 0; i < indices.size(); i ++ ) { if(s.compare(indices[i], sources[i].size(), sources[i]) == 0) { rep[indices[i]] = {targets[i], sources[i].size()}; } } string res; for(int i = 0; i < n; i += rep[i].second) { if(rep[i].first.empty()) { res += s[i]; } else { res += rep[i].first; } } return res; } };