一、题目描述:
二、思路分析:
这道题本身并不难,甚至可以说是一道很简单的模板题
看到实例1的时候还以为简单for循环一遍过,后来看到示例2才发现这道题是需要添加一个栈的,
但是添加栈也没什么。从3[a]中我们可以明白,栈中信息包括数字和字母,要么是stack<pair<int,string>>要么是两个stack,感觉很繁琐,(这里主要是我pair没学,不大会用),就改用python实现。
三、AC 代码:
class Solution:
def decodeString(self, s: str) -> str:
stack, res, multi = [], "", 0
for c in s:
if c == '[':
stack.append([multi, res])
res, multi = "", 0
elif c == ']':
cur_multi, last_res = stack.pop()
res = last_res + cur_multi * res
elif '0' <= c <= '9':
multi = multi * 10 + int(c)
else:
res += c
return res
四、总结:
这道题其实就是想明白遇到什么类字符有什么样子的操作,遇到数字就更新数字变量,遇到字母就更新字母变量,遇到左右括号就更新栈
用草纸写几次就明白了
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情