394. Decode String
s = "3[a]2[bc]", return "aaabcbc".
s = "3[a2[c]]", return "accaccacc".
s = "2[abc]3[cd]ef", return "abcabccdcdcdef".// Recursion
string decodeHelper(const string& s, int& i) {
string res;
while (i < s.length() && s[i] != ']') {
// add character directly
if (s[i] < '0' || s[i] > '9') {
res += s[i++];
} else {
int num = 0;
while (s[i] >= '0' && s[i] <= '9') {
num = num * 10 + (s[i++] - '0');
}
++i; // Skip '['
string tmp = decodeHelper(s, i);
++i; // Skip ']'
while (num-- > 0) {
res += tmp;
}
}
}
return res;
}
string decodeString(string s) { // time: O(n); space: O(n)
int i = 0;
return decodeHelper(s, i);
}Last updated