程式語言 - LeetCode - C++ - 394. Decode String



參考資訊:
https://www.cnblogs.com/grandyang/p/5849037.html

題目:


解答:

class Solution {
public:
    string decodeString(string s) {
        int v = 0;
        string r;
        stack<int> num;
        stack<string> buf;

        for (int i = 0; i < s.size(); i++) {
            if ((s[i] >= '0') && (s[i] <= '9')) {
                v = (v * 10) + (s[i] - '0');
                continue;
            }

            switch (s[i]) {
            case '[':
                num.push(v);
                buf.push(r);
                r.clear();
                v = 0;
                break;
            case ']':
                for (int j = num.top(); j > 0; j--) {
                    buf.top() += r;
                }
                r = buf.top();

                num.pop();
                buf.pop();
                break;
            default:
                r += s[i];
                break;
            }
        }

        return r;
    }
};