LeetCode -- 833. 字符串中的查找与替换 (延迟改变策略)

发布时间 2023-08-15 08:42:07作者: 深渊之巅

 

 

 

所谓延迟改变,可以是在应该改变的地方打一个标记,等把所有应该改变的地方都找到后,再进行操作。

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;
    }
};