leetcode-394. 字符串解码

 

 

这题作者的想法太简洁了,涉及好多细节,一般人想不到。

 

class Solution {
public:
    string decodeString(string s) {
        stack<pair<int, string>> st;
        int num = 0;
        string res = "";
        for(int i = 0; i < s.size(); i++){
            if(s[i]>='0'&&s[i]<='9'){
                num = num*10;
                num = num + (s[i]-'0');
            }else if(s[i]=='['){
                st.push(make_pair(num, res));
                res = "";
                num =0;
            }else if(s[i]==']'){
                int n = st.top().first;
                string temp = st.top().second;
                st.pop();
                for(int i = 0; i < n; i++){
                    temp = temp + res;
                }
                res = temp;
            }else{
                res = res + s[i];
            }
        }
        return res;
    }
};

 

posted @ 2021-07-29 11:25  三一一一317  阅读(22)  评论(0)    收藏  举报