LeetCode 20 括号匹配
先建立一个空栈,左边括号用left表示,右边括号用right表示,验证s中的字符是否与left匹配,如果是则压入栈中,判断是否与右边括号匹配,如果栈不为空并且左右括号不匹配则返回False,否则匹配弹出栈中元素,如果栈中的元素不为left或者right中的值,返回False,最后判断栈中是否有元素,没有则匹配成功
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
left={'(','{','['}
right={')','}',']'}
stack=[]
for x in s:
if x in left:
stack.append(x)
elif x in right:
if not stack or not (1<=ord(x)-ord(stack[-1])<=2):
return False
stack.pop()
else:
return False
return not stack