响应掘金号召3.6.2 python是真的快|刷题打卡

135 阅读1分钟

一、题目描述:

二、思路分析:

这道题本身并不难,甚至可以说是一道很简单的模板题

看到实例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 春招闯关活动」, 点击查看 活动详情