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 ...
随机推荐
- MySql按字段分组取最大值记录 [此博文包含图片]
要求:获得按table1_id分组,并且age最大的记录信息,即2.3.5条 方法一: select * from (select * from table2 order by age d ...
- SyntheticEvent
在react 的事件中使用SyntheticEvent 就会出现下面的报错 <input onChange={async e => { await foo() ... }} /> 那 ...
- [原]openstack-kilo--issue(十八) Error parsing template file: Template format version not found.
在创建stack的时候出现的报错: ]# heat stack-create nems_demo -e AAA.yaml -f AAA.parameter.yaml Error parsing tem ...
- C++内存管理(转)
C++内存管理 [导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理 ...
- jQuery学习之二
jQuery对象获取方法:var $cr=$("#cr"); //jQuery方法获取的是一个·对象数组. var cr=$cr[0] // var cr=$cr.get(0); ...
- Django----From组件
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 1.创建Form类 from django.f ...
- 树剖||树链剖分||线段树||BZOJ4034||Luogu3178||[HAOI2015]树上操作
题面:P3178 [HAOI2015]树上操作 好像其他人都嫌这道题太容易了懒得讲,好吧那我讲. 题解:第一个操作和第二个操作本质上是一样的,所以可以合并.唯一值得讲的点就是:第二个操作要求把某个节点 ...
- 没有上司的舞会|codevs1380|luoguP1352|树形DP|Elena
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系 ...
- Older Versions Of Eclipse
Older Versions Of Eclipse Need help with older versions of Eclipse? LTS Request The following are li ...
- HTML5:表单提交
不加CSS.JavaScrips的HTML表单提交简单代码 <!DOCTYPE html> <html lang="en"> <head> &l ...