题目
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 注意空字符串可被认为是有效字符串。

思路
遇到右括号,只要判断离右括号最近的是不是相应的最括号即可。利用栈结构,去寻找右括号距离最近的左括号。
class Solution:def isValid(self, s: str) -> bool:bracket_map = {'(':')', '{':'}', '[':']'}left_bracket_stack = []for ch in s:if ch in bracket_map:left_bracket_stack.append(ch)else:# 判断栈顶是不是相应的左括号if left_bracket_stack and bracket_map[left_bracket_stack.pop()] == ch:continueelse:return Falsereturn left_bracket_stack == []
