每日leetcode(8)
20.有效的括号,判断括号匹配是否正确
这个用栈,当遇到左括号时入栈,当遇到右括号时,先判断栈是否空,为空则返回False,如果不空再判断顶端元素是否和右括号匹配,不匹配则返回False,匹配则继续遍历,遍历完成,判断栈是否为空,代码如下
class Solution():
def isValid(self,s):
l=[]#列表模拟栈
d={')':'(','}':'{',']':'['} #建立字典匹配承兑符号
for i in range(len(s)):
if s[i]=='(' or s[i]=='[' or s[i]=='{':#左括号入栈
l.append(s[i])
elif s[i]==')' or s[i]==']' or s[i]=='}':#右括号判断
if not l:#要出栈,可是栈空
return False
if d[s[i]]==l[-1]:#是否匹配
l.pop()#出栈
else:
return False
if not l:
return True
else:
return False