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]两个元素了
最新文章
- 洛谷P2964 [USACO09NOV]硬币的游戏A Coin Game
- [数据库事务与锁]详解八:底理解数据库事务乐观锁的一种实现方式——CAS
- ios 后台播放音乐1条注意事项
- android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位
- HTTP协议强化理解
- Kafka学习笔记(一):概念介绍
- iOS开发-用预处理指令代替注释
- easy ui datagrid 数据绑定
- sharepoint 2010 masterpage中必须的Content PlaceHolder
- SQL中子查询为聚合函数时的优化
- 猜数字-js
- jsp字段判空
- Entity Framework入门教程:SQLite数据源访问
- Centos 6.5开启rsync同步
- 小黄衫 Get
- Mybatis事务(一)事务管理方式
- 用python写栈
- Ruby学习笔记2 : 一个简单的Ruby网站,搭建ruby环境
- [Java学习]面向对象-super关键字;final关键字
- Tornado 框架的使用
热门文章
- 4、一、Introduction(入门):3、System Permissions(系统权限)
- 【SpringCloud错误】错误记录
- day_4_24 py
- Flask web开发之路七
- Android Studio 工具窗口浮动与布局恢复【申明:来源于网络】
- 在ASP.NET Core中实现自定义验证特性(Custom Validation Attribute)
- 524 (Div. 2) Masha and two friends
- [No0000125]WCF安全体系
- Hadoop开发环境配置2-eclipse集成maven插件
- i-chips融合芯片分析