题目
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 注意空字符串可被认为是有效字符串。
思路
遇到右括号,只要判断离右括号最近的是不是相应的最括号即可。利用栈结构,去寻找右括号距离最近的左括号。
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:
continue
else:
return False
return left_bracket_stack == []