• 题目描述:按照规定,把字符串解码,具体示例见题目链接

  • 思路:使用两个栈分别存储数字和字母

  • 注意1: 数字是多位的话,要处理后入数字栈

  • 注意2: 出栈时过程中产生的组合后的字符串要继续入字母栈

  • 注意3: 记得字母出栈的时候字符要逆序组合成字符串

  • 注意4: 不用字符串而用字母栈的原因是字符串的 join 效率会比字符串加法高一些

  • 结果: 30 ms, beat 98.02%

  • 缺点:判断是数字那里有点代码不简洁,可以把 j 挪到循环外面的

class Solution(object):
def decodeString(self, s):
"""
:type s: str
:rtype: str
"""
nums, chars = [], []
i, length = 0, len(s)
while i < length:
j = i + 1
if s[i].isdigit():
num = int(s[i])
while j < length:
if s[j].isdigit():
num = num * 10 + int(s[j])
j += 1
else:
break
nums.append(num)
elif s[i] == '[' or s[i].isalpha():
chars.append(s[i])
else:
t, tmpc = chars.pop(), []
while t != '[':
tmpc.append(t)
t = chars.pop()
tchars = nums.pop() * ''.join(tmpc[::-1])
chars.append(tchars)
i = j
return ''.join(chars)

Python 解LeetCode:394 Decode String的更多相关文章

  1. [LeetCode] 394. Decode String 解码字符串

    Given an encoded string, return it's decoded string. The encoding rule is: k[encoded_string], where ...

  2. Leetcode -- 394. Decode String

    Given an encoded string, return it's decoded string. The encoding rule is: k[encoded_string], where ...

  3. 【LeetCode】394. Decode String 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 日期 题目地址:https://leetcode ...

  4. Python 解LeetCode:606 Construct String from Binary Tree

    题目描述:用先序遍历的方式把二叉树转换成字符串,其中结点用括号分割,具体示例见题目链接 思路: 先序遍历,先把根结点的值转化成字符串,然后递归的把左右子树的值转化成字符串 把1中的根结点和左右子结点的 ...

  5. 【leetcode】394. Decode String

    题目如下: 解题思路:这种题目和四则运算,去括号的题目很类似.解法也差不多. 代码如下: class Solution(object): def decodeString(self, s): &quo ...

  6. Python 解LeetCode:Intersection of Two Arrays

    最近,在用解决LeetCode问题的时候,做了349: Intersection of Two Arrays这个问题,就是求两个列表的交集.我这种弱鸡,第一种想法是把问题解决,而不是分析复杂度,于是写 ...

  7. 394 Decode String 字符串解码

    给定一个经过编码的字符串,返回它解码后的字符串.编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数.你可以认 ...

  8. Python 解leetcode:48. Rotate Image

    题目描述:把一个二维数组顺时针旋转90度: 思路: 对于数组每一圈进行旋转,使用m控制圈数: 每一圈的四个元素顺时针替换,可以直接使用Python的解包,使用k控制每一圈的具体元素: class So ...

  9. 394. Decode String

    [题目] Total Accepted: 10087 Total Submissions: 25510 Difficulty: Medium Contributors: Admin Given an ...

随机推荐

  1. BS4库详解

    from bs4 import BeautifulSoup html = """ <html><head><title>This is ...

  2. mysql 连接服务器报ERROR 1130 ,mysql服务正常运行

    今天办公电脑的mysql罢工了,折腾了半天,记录一下. 错误如下: ERROR 1130 (HY000): Host 'localhost' is not allowed to connect to ...

  3. Go -- client 302 自动转 200 问题 cookie存储 模拟登陆问题

    不久前用go写了个http client,去模拟某网站(*.com)的登录操作.网站的登录逻辑:1.验证登录账号和密码:2.下发token.此token通过cookie下发:3.redirect到主页 ...

  4. grep awk 查看nginx日志中所有访问的ip并 去重

    111.225.78.157 - - [13/Aug/2019:16:03:08 +0800] "POST /api/login HTTP/1.1" 200 249 "h ...

  5. MFC GDI+显示GIF文件《转》

    在头文件里面添加: Image* image; GUID Guid ; UINT frameCount; UINT framePos;ULONG_PTR gdiplusToken; afx_msg v ...

  6. Kafka的Topic、Partition和Message

    Kafka的Topic和Partition Topic Topic是Kafka数据写入操作的基本单元,可以指定副本 一个Topic包含一个或多个Partition,建Topic的时候可以手动指定Par ...

  7. 使用layui框架的select获取选中的值

    在使用时需要注意:select标签的外层需要加上类名".layui-form" 接下来就是根据需求来改变下拉框的内容了,直接给select的option重新赋一次值,记得加上对应的 ...

  8. Python中__new__和__init__的区别与联系

    __new__ 负责对象的创建而 __init__ 负责对象的初始化. __new__:创建对象时调用,会返回当前对象的一个实例 __init__:创建完对象后调用,对当前对象的一些实例初始化,无返回 ...

  9. asp程序里,如何判断一个字符串中存在包含了另一个字符串?

    1.判断是否包含某某字符函数是:Instr()和InstrRev();2.具体使用如下:ab="abcdefgHTTP"你可以用Instr()或者InstrRev()来判断if I ...

  10. xcopy命令拷贝文件夹和文件

    文件夹: xcopy /r /y 'c:123\' 'D:\123\' 文件: echo f | xcopy  /d /r /k  c:\index2.htm c:\index.htm