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 ...
随机推荐
- 理解AppDomain
在传统的 Win32的程序中,进程是独立的运行空间, 在一些大型系统中, 通常都是将系统中的核心功能分解出来用独立的进程来处理,一方面是为了能获得更高的系统性能.吞吐量 .另一方面是为了能隔离功能之间 ...
- LeetCode - 872. Leaf-Similar Trees
Consider all the leaves of a binary tree. From left to right order, the values of those leaves form ...
- 获取HttpServletRequest请求Body中的内容
在实际开发过程中,经常需要从 HttpServletRequest 中读取HTTP请求的body内容,俗话说的好”好记性不如烂笔头“,特在此将其读取方法记录一下. import java.io.Buf ...
- windows上测试磁盘io性能
一.问题由来 前两天搭建一套演示环境,同样的java war包,放在我们这边服务器好好的,放在那边就运行缓慢. 后来把日志改成异步之后就好了. 后边找了个程序测了下io性能,竟然差了7,8倍. 二.软 ...
- vue 本地开发时使用localhost与ip访问
修改config文件夹下面的index.js配置,将localhost改为0.0.0.0就可以了.用ip,127.0.0.1,localhost均行 host: '0.0.0.0', // can b ...
- linux的centos如何查看java的安装路径
https://blog.csdn.net/dannistang/article/details/82906867 使用echo查看文件位置的话,前提是配置安装了环境变量java_home,否则是找不 ...
- AJAX基本操作 + 登录 + 删除 + 模糊查询
AJAX练习显示页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// ...
- [No000013C]B树、B-树、B+树、B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B ...
- MySQL异步复制-加强版
准备:主备库版本一致,主从库正常安装软件. 1.主库上设置一个复制使用的账户: mysql> grant replication slave,replicate client on *.* to ...
- iOS调用第三方导航和线路规划
线路规划: https://blog.csdn.net/qq_19979539/article/details/51938995 百度地图:baidumap: 高德地图:iosamap: 腾讯地图:q ...