class Solution:
def isValid(self, s: str) -> bool:
#字符串长度为奇数,肯定无效
if len(s) % 2 != 0 :
return False
#建立字典,方便判断是否是对应的符号
pairs = {
‘)’ : ‘(’,
‘]’ : ‘[’,
‘}’ : ‘{’,
}
#用列表实现栈结构
stack = list()
for ch in s :
if ch in pairs:
if not stack or stack[-1] != pairs[ch]:
return False
stack.pop()
#第一个如果不是左括号,就必然无效
else :
stack.append(ch)
#如果最后正常结束,stack为空(null),所以用not stack
return not stack
笔记:1、读完题目,很自然联想到数据结构当中的栈,所以这道题就是考察栈的用法
2、注意字典的灵活用法
3、栈的数据结构在python中是利用列表实现的
4、由于返回值是bool类型,所以可以用到not stack,因为如果最后正常结束,stack为空(null),否则在之前的遍历中就会返回False