题目
给定一个只包含'(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
思路
对于左括号,暂时不能判断,需要存起来;
对于右括号,判断离其最近的括号是不是相应的左括号。
典型的后入先出,需要借助栈来实现。
遍历所有字符ch,左括号入栈,如果是右括号则弹出栈顶元素判断是否是对应的左括号。
结束时所有元素出栈,栈应该为空,则说明是有效的括号。
class Solution:def isValid(self, s: str) -> bool:matches = {'}':'{', ']':'[', ')':'('}stack = []for ch in s:if ch not in matches:stack.append(ch)else:if stack and stack.pop() == matches[ch]:continueelse:return Falsereturn not stack
