leetcode

Solution 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);
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]; });
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;
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++];
26 return res;
27 }
28 };