天天看點

LeetCode_394. Decode String 字元串解碼

題目描述:

LeetCode_394. Decode String 字元串解碼

思路:首先想到使用棧來存放資料,一個數字棧,一個字元棧。

1.當遇到數字的時候就統計數字(注意數字可能會超過一位數)

2.當遇到字元的時候就記錄下來

class Solution {
public:
    string decodeString(string s) {
        int num=0;//用于統計數字結果
        for(char c:s){
            if(isdigit(c))
                num=num*10+(c-'0');
            else if(isalpha(c)){
                res+=c;
            }else if(c=='['){
                chars.push(res);
                nums.push(num);
                res="";
                num=0;
            }else{
                string temp=res;//已經重複一次了
                for(int i=0;i<nums.top()-1;i++)//在這裡少重複一次
                    res+=temp;
                res=chars.top()+res;
                chars.pop();
                nums.pop();
            }
        }
        return res;
    }
private:
    stack<string> chars;
    stack<int> nums;
    string res;
};