【刷题1】LeetCode 394. 字符串解码 java题解

我的代码能力:-∞
【刷题1】LeetCode 394. 字符串解码 java题解

1.题目

【刷题1】LeetCode 394. 字符串解码 java题解

2.分析

设置两个变量res,mutil。
遍历String中的每个字符c:
如果c是字符,加入res的尾部;
如果c是数字,将数字字符转化为数字multi;
如果c是‘[’,将当前multi和res入栈,再将multi和res清零;
如果c是’]’,出栈,res=last_res+cur_multi*res。其中,
last_res是上个 [ 到当前 [ 的字符串,例如 “3[a2[c]]” 中的 a;
cur_multi是当前 [ 到 ] 内字符串的重复倍数,例如 “3[a2[c]]” 中的 2

3.复杂度

时间复杂度 O(N),一次遍历 s;
空间复杂度 O(N),辅助栈在极端情况下需要线性空间,例如 2[2[2[a]]]。

4.代码