1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| class Solution { public: string decodeString(string s) { int i = 0; return helper(s, i); }
string helper(const string &s, int &i) { string ret; while (i < s.length() && s[i] != ']') { if (isdigit(s[i])) { int num = 0; do { num = num * 10 + s[i++] - '0'; } while (i < s.length() && isdigit(s[i])); string t = helper(s, ++i); ++i; while (num-- > 0) { ret += t; } } else { ret += s[i++]; } } return ret; } };
|