Python 解LeetCode:394 Decode String
题目描述:按照规定,把字符串解码,具体示例见题目链接
思路:使用两个栈分别存储数字和字母
注意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的更多相关文章
- [LeetCode] 394. Decode String 解码字符串
Given an encoded string, return it's decoded string. The encoding rule is: k[encoded_string], where ...
- Leetcode -- 394. Decode String
Given an encoded string, return it's decoded string. The encoding rule is: k[encoded_string], where ...
- 【LeetCode】394. Decode String 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 日期 题目地址:https://leetcode ...
- Python 解LeetCode:606 Construct String from Binary Tree
题目描述:用先序遍历的方式把二叉树转换成字符串,其中结点用括号分割,具体示例见题目链接 思路: 先序遍历,先把根结点的值转化成字符串,然后递归的把左右子树的值转化成字符串 把1中的根结点和左右子结点的 ...
- 【leetcode】394. Decode String
题目如下: 解题思路:这种题目和四则运算,去括号的题目很类似.解法也差不多. 代码如下: class Solution(object): def decodeString(self, s): &quo ...
- Python 解LeetCode:Intersection of Two Arrays
最近,在用解决LeetCode问题的时候,做了349: Intersection of Two Arrays这个问题,就是求两个列表的交集.我这种弱鸡,第一种想法是把问题解决,而不是分析复杂度,于是写 ...
- 394 Decode String 字符串解码
给定一个经过编码的字符串,返回它解码后的字符串.编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数.你可以认 ...
- Python 解leetcode:48. Rotate Image
题目描述:把一个二维数组顺时针旋转90度: 思路: 对于数组每一圈进行旋转,使用m控制圈数: 每一圈的四个元素顺时针替换,可以直接使用Python的解包,使用k控制每一圈的具体元素: class So ...
- 394. Decode String
[题目] Total Accepted: 10087 Total Submissions: 25510 Difficulty: Medium Contributors: Admin Given an ...
随机推荐
- rocketMq和kafka的架构区别
概述 其实一直想写一篇rocketMq和kafka在架构设计上的差别,但是一直有个问题没搞明白所以迟迟没动手,今天无意中听人点播了一下似乎明白了这个问题,所以就有了这篇对比. 这篇博文主要讲清楚kaf ...
- gitconfig别名配置
vim ~/.gitconfig 进行配置 [user] name = Your Name email = you@yourdomain.example.com [core] editor = vim ...
- sass登陆页面实例
sass登陆页面实例 一.总结 一句话总结: sass使用非常方便:使用就是将sass转化为css引入,并且动态监听让sass转化为css,可以很方便的所见即所得 1.sass安装? npm就可以按照 ...
- openssl从内存中读取私钥进行签名
麻痹的找了好久,真恶心! #include <stdio.h> #include <stdlib.h> #ifdef WIN32 #include <windows.h& ...
- 实时查看linux下的日志
cat /var/log/*.log 如果日志在更新,如何实时查看 tail -f /var/log/messages 还可以使用 watch -d -n 1 cat /var/log/message ...
- git如何删除远程tag?
答: 分为两步: 1. 删除本地tag git tag -d tag-name 2. 删除远程tag git push origin :refs/tags/tag-name
- SNAT场景模拟
我的网络配置跟教程中的这个略有不同: web server:192.168.66.101 nat server:192.168.66.188:192.168.6.172 client:192.168. ...
- openresty开发系列28--openresty中操作mysql
openresty开发系列28--openresty中操作mysql Mysql客户端 应用中最常使用的就是数据库了,尤其mysql数据库,那openresty lua如何操作mysql呢? ...
- openresty开发系列27--openresty中封装redis操作
openresty开发系列27--openresty中封装redis操作 在关于web+lua+openresty开发中,项目中会大量操作redis, 重复创建连接-->数据操作-->关闭 ...
- 转「服务器运维」如何解决服务器I/O过高的问题
问题缘起: 当我习惯性地用top查看任务运行状态时,发现我运行的100个任务,只有3个在运行,其他都在摸鱼状态.同时发现我的任务进程都是"D"状态(未截图),而不是R(运行)状态. ...