解题方法:
参考代码:
class Solution{
public:string decodeString(string s){stack<string> sst;stack<int> dst;//防止字符串栈为空的时候再追加字符串到栈顶元素sst.push("");int n = s.size();int i = 0;while(i<n)//最好不要用for循环,容易出问题{if (s[i] >= '0' && s[i] <= '9'){int tmp = 0;while (i < n && s[i] >= '0' && s[i] <= '9'){tmp = tmp * 10 + (s[i] - '0');i++;}dst.push(tmp);}else if (s[i] == '['){//记得++从下一个位置开始找字母字符串,否则会死循环i++;string str;while (i < n && s[i] >= 'a' && s[i] <= 'z'){str += s[i];i++;}sst.push(str);}else if (s[i] == ']'){int k = dst.top();dst.pop();string tmp = sst.top();sst.pop();for (size_t j = 0; j < k; j++){sst.top() += tmp;}//记得要++,否则会死循环i++;}else if (s[i] >= 'a' && s[i] <= 'z'){while (i < n && s[i] >= 'a' && s[i] <= 'z'){sst.top() += s[i];i++;}}}return sst.top();}
};