Decoded String at Index LeetCode solution in C++

1
class Solution {
2
public:
3
string decodeAtIndex(string s, int k) {
4
k--;
5
struct op {
6
string s;
7
size_t mult;
8
size_t total;
9
};
10
vector<op> v;
11
size_t total = 0;
12
for (auto c : s) {
13
if (isalpha(c)) {
14
if (v.empty() || v.back().mult > 1) v.push_back({"", 1, total});
15
v.back().s += c;
16
v.back().total = ++total;
17
} else {
18
size_t m = c - '0';
19
v.back().mult *= m;
20
v.back().total = total *= m;
21
}
22
if (total > k) break;
23
}
24
while (!v.empty()) {
25
auto [s, mult, total] = v.back();
26
v.pop_back();
27
size_t part = total / mult;
28
k %= part;
29
if (size_t i = k - part + s.size(); i < s.size()) return {s[i]};
30
}
31
return "#";
32
}
33
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0