#主要的思路就是遍历字符串,遇到左括号就将对应的右括号压入列表然后取出与左括号匹配
#不同情况:1.括号的个数为奇数(){,对应的代码是 if len(s) % 2 == 1:return False
# 2.类型不匹配[},对应的代码是bracket!=stack.pop()
# 3.以右括号开始或者右括号多了出来))、([{}]))),对应代码是elif len(stack)==0
# 4.左括号((多了出来,对应的代码是return len(stack)==0,不等于0就是栈里留了偶数个左括号;等于0就是栈里的括号都匹配完成,返回真
class Solution(object):
def isValid(self, s):
if len(s) % 2 == 1:
return False
pairs={'{':'}','(':')','[':']'}
stack=[]
for bracket in s:
#如果该字符是左括号就将右括号压入栈
if bracket in pairs: #if i in 字典 这个句子的i是指字典里的键而不是值
stack.append(pairs[bracket])#将右括号放进列表
#如果是像这种情况([{}])))、)...的话len(stack)==0这个条件就会为真,后面这个条件就是括号类型不匹配
elif len(stack)==0 or bracket!=stack.pop():
return False
#最后的这个return的话是针对((这个情况的话
return len(stack)==0
if bracket in pairs:
这句代码是想提醒一下我自己:其中的bracket是一个变量,pairs是一个字典类型,这个if语句是判断bracket在不在pairs的键里,不是值。