leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0833.cpp (966B)
0 class Solution { 1 public: 2 string findReplaceString(const string &s, const vector<int> &indices, const vector<string> &sources, 3 const vector<string> &targets) const { 4 const int n = size(indices); 5 6 static int order[10001]; 7 iota(begin(order), begin(order) + n, 0); 8 sort(begin(order), begin(order) + n, [&indices](int i, int j) { return indices[i] < indices[j]; }); 9 10 string res; 11 int crnt = 0; 12 for (int i = 0; i < n; i++) { 13 const int idx = order[i], m = size(sources[idx]); 14 int pos = 0; 15 16 if (indices[idx] < crnt) continue; 17 while (indices[idx] > crnt) 18 res += s[crnt++]; 19 while (pos < m && s[crnt + pos] == sources[idx][pos]) 20 pos++; 21 if (pos == m) res += targets[idx], crnt += m; 22 } 23 while (crnt < size(s)) 24 res += s[crnt++]; 25 26 return res; 27 } 28 };