LeetCode之有效括号
class Solution:
def isValid(self,s):
#第一步,if 判断传入为空的情况
if s == "":
return True
#第二步,if 判断当传入字符串个数为奇数个时,返回False
if len(s) % 2 ==1:
return False
#定义一个字典,左括号为 Key,右括号为 Values
d = {"(" :")","[" :"]","{" :"}"}
#空列表,用于保存遍历 S 时的左括号
l = []
#遍历 s
for i in s:
if i in d: #判断当 i = 左括号
l.append(i) #将等于左括号的 i 添加到列表 l 中
else:
#len(l) == 0时,没有左括号,或者 s 的第一个不是字符不是左括号,返回False
#弹出 l 中的上一个(当前状态的 l 的最后一个元素)元素作为字典 d 的Key
#d[l.pop()] != i 判断 Values 与 i 是否相同
if len(l) == 0 or d[l.pop()] != i :
return False
#下面一段很关键
#首先,每次出现pop()这个语句的时候,原列表 l 中的最后一个元素就已经弹出了
#所以,如果左右括号成对出现,并一一对应,最后 l 列表元素个数会为 0
if len(l) != 0:
return False
return True
用Debug模式调试运行,看列表 l 中元素的变化更容易理解
解释一些这句话:每次出现pop()这个语句的时候,原列表 l 中的最后一个元素就已经弹出了
比如:
list1= [1,2,3] #定义一个列表
print(list1.pop())#打印list1 pop出来的元素 打印结果显示为 3
#此时你觉得打印列表 list1会是什么结果?
print(list1) #结果显示为 [1,2]
虽然只是执行打印 print(list1.pop()) 但事实上pop这个操作执行了,list1中就只有[1,2]两个元素了
LeetCode之有效括号的更多相关文章
- LeetCode 921. 使括号有效的最少添加(Minimum Add to Make Parentheses Valid) 48
921. 使括号有效的最少添加 921. Minimum Add to Make Parentheses Valid 题目描述 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的 ...
- leetcode 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: - 左括号必须用相同类型的右括号闭合. - 左括号必须以正确的顺序闭合. 注意空字符 ...
- Leetcode 22.生成括号对数
生成括号对数 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n =3,生成结果为: [ "((()))", "( ...
- Leetcode题目22.括号生成(动态规划-中等)
题目描述: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "( ...
- Java实现 LeetCode 1111 有效括号的嵌套深度(阅读理解题,位运算)
1111. 有效括号的嵌套深度 有效括号字符串 定义:对于每个左括号,都能找到与之对应的右括号,反之亦然.详情参见题末「有效括号字符串」部分. 嵌套深度 depth 定义:即有效括号字符串嵌套的层数, ...
- LeetCode(1)---检查括号出现的合法性
题目: 检查字符串中"( )","[ ]","{ }" 的合法性,即是否成对出现 eg,如出现"[()]", ...
- leetcode 921. 使括号有效的最少添加
问题描述 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字符 ...
- leetcode 1541. 平衡括号字符串的最少插入次数
问题描述 给你一个括号字符串 s ,它只包含字符 '(' 和 ')' .一个括号字符串被称为平衡的当它满足: 任何左括号 '(' 必须对应两个连续的右括号 '))' . 左括号 '(' 必须在对应的连 ...
- leetcode 921. 使括号有效的最少添加(Python)
class Solution: def minAddToMakeValid(self, S): """ :type S: str :rtype: int "&q ...
随机推荐
- 为你的mail server增加SPF记录
什么是SPF就是Sender Policy Framework.SPF可以防止别人伪造你来发邮件,是一个反伪造性邮件的解决方案.当你定义了你的domain name的SPF记录之后,接收邮件方会根据你 ...
- ios 消除 字符串 首尾空格
本文转载至 http://blog.csdn.net/reylen/article/details/8233353 (1)系统去首尾空格方法,使用NSString中的str = [str string ...
- 132、Android安全机制(2) Android Permission权限控制机制(转载)
http://blog.csdn.net/vshuang/article/details/44001661 http://www.cnblogs.com/mengdd/p/4892856.html
- docker 搭建ntp服务器
背景 在搭建etcd集群时,如果主机时间相差太多会出现同步错误,如果外部网络不可用时,需要使用内部的ntp服务器同步时间. 构建ntp镜像 创建Dockerfile # usage: # docker ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验六:数码管模块
实验六:数码管模块 有关数码管的驱动,想必读者已经学烂了 ... 不过,作为学习的新仪式,再烂的东西也要温故知新,不然学习就会不健全.黑金开发板上的数码管资源,由始至终都没有改变过,笔者因此由身怀念. ...
- ElasticSearch5.X的冷热数据架构
转载:https://my.oschina.net/xiaomaijiang/blog/826701 当使用ElasticSearch做大规模的时序数据分析的时候,我们建议使用基于时序的索引并且采用3 ...
- springMVC参数传递实例
最好所有的post请求用postman这个工具就好了. postman传对象
- ssl---阿里云的public.crt和chain.crt的证书怎么弄
由于项目需要,网站需要https服务,服务器是阿里云的,装的是宝塔的面板,下面是详细的配置ssl证书的方法: 如何在阿里云的后台申请ssl证书就不说了,下载下来的证书有三个:.key chain. ...
- c语言中的左移和右移
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1;i = i << 2; //把i里的值左移2位 也就是说,1的2进制是00 ...
- GEM5安装
转自:http://blog.sina.com.cn/s/blog_548b0a230101cagk.html GEM5在ubuntu13.10下安装过程,首先下载gem5_stable最新安装包,解 ...