思路:利用栈+哈希表 注意点:
- 奇数个符号直接返回False
- 遇到左括号,依次压入栈
- 遇到右括号,如果栈为空,返回False;否则,弹出栈顶的左括号,判断是否是该右括号对应的左括号(因为最新的右括号必须先闭合),若不是,返回False。 4.遍历完所有字符,最后判断栈是否空,若非空,返回False,否则返回True。
class Solution:
def isValid(self, s: str) -> bool:
if len(s)%2 != 0:
return False
r_map = {')':'(',']':'[','}':'{'}
stack = []
for i in range(len(s)):
if s[i] not in r_map.keys():
stack.append(s[i])
else:
if not stack:
return False
left = stack.pop()
if left != r_map[s[i]]:
return False
if stack:
return False
return True