1. 程式人生 > 其它 >leetcode 字串解碼 中等

leetcode 字串解碼 中等

用棧來儲存字元,每一次遇到 ']' 時,就彈棧到棧頂為 '[' 為止,這樣就得到了中括號內的字元,然後繼續彈,得到次數即可。

最後按照次數與字串在入棧

class Solution {
public:
    string decodeString(const string &s) {
        stack<char> stk;
        for (int i = 0; i < s.size(); ++i) {
            if (s[i] != ']') {
                stk.push(s[i]);
                
continue; } string temp; while (!stk.empty() && stk.top() != '[') { temp.push_back(stk.top()); stk.pop(); } stk.pop(); int cnt = 0, base = 1; while (!stk.empty() && stk.top() != '
[' && stk.top() >= '0' && stk.top() <= '9') { cnt = (stk.top() - '0') * base + cnt; base *= 10; stk.pop(); } if (temp.empty()) continue; for (int j = 0; j < cnt; ++j) { for (int k = temp.size() - 1
; k >= 0; --k) { stk.push(temp[k]); } } } string ret; while (!stk.empty()) { ret.push_back(stk.top()); stk.pop(); } reverse(ret.begin(), ret.end()); return ret; } };