using namespace std; string decodeString(const string& s, int& i); int main(void) { //3[z]2[2[y]pq4[2[jk]e1[f]]]ef string s = "3[z]2[2[y]pq4[2[jk]e1[f]]]ef"; int i = 0; string out = decodeString(s, i); cout << out << endl; return 0; } string decodeString(const string& s, int& i) { string res; while (i<s.length()&&s[i]!=']') { if (!isdigit(s[i])) res += s[i++]; else { int n = 0; while (i < s.length() && isdigit(s[i])) n = n * 10 + s[i++] - '0'; i++; string t = decodeString(s, i); i++; while (n-- > 0) { res += t; } } } return res; }