思路:利用栈+哈希表 注意点:

  1. 奇数个符号直接返回False
  2. 遇到左括号,依次压入栈
  3. 遇到右括号,如果栈为空,返回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