题目:
思路+解答:
class Solution:
def isValid(self, s: str) -> bool:
# 思路:
# 1.首先判断只是双引号的空字符串是有效的
# 2.利用字典映射key=右括号, value为左括号使得括号匹配更方便;
# 3.利用栈,左括号入栈,当为右括号时,判断异常:栈是否为空或栈顶元素是否与右括号匹配,如果正确匹配则不管;
# if s == r"":
# return True
stack = []
str_map = {')':'(', ']':'[', '}':'{'}
for r in s:
if r not in str_map: # 左括号入栈
stack.append(r)
elif not stack or stack.pop() != str_map[r]: # 当为右括号时,如果栈为空或栈顶元素不匹配
return False
return not stack