394. 字符串解码

 1 class Solution 
 2 {
 3 public:
 4     string decodeString(string s) 
 5     {
 6         int len = s.size();
 7         int num = 0;
 8         stack<int> numstack;
 9         stack<string> strstack;
10         string cur = "";
11         string result = "";
12         for(int i=0; i<len; ++i)
13         {
14             if(isdigit(s[i])) num = 10*num + s[i] - '0';
15             else if(s[i] == '[')
16             {
17                 numstack.push(num);
18                 strstack.push(cur);//同时放入,保持两个栈的大小相同
19                 num = 0;
20                 cur.clear();
21             }
22             else if(isalpha(s[i])) cur += s[i];
23             else if(s[i] == ']')
24             {
25                 int k = numstack.top();
26                 numstack.pop();
27                 for(int j=0; j<k; ++j) strstack.top() += cur;
28                 cur = strstack.top();
29                 strstack.pop();
30             }
31         }
32         result = result + cur;
33         return result;     
34     }
35 };

 

posted @ 2020-04-20 10:18  Jinxiaobo0509  阅读(116)  评论(0)    收藏  举报