LeetCode20——有效的括号
题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
解答:
处理括号匹配等一类的问题,一个行之有效的方法就是利用——栈。
我们知道栈有一个特性,那就是先进后出,或者说后进先出。观察有效的括号组合,可以发现有限的括号都是成对出现的,算法图如下:

算法:
1. 遍历字符串,如果遇到左边的括号('(', '[', '{'),将之压入栈中
2. 如果遇到右边的括号,就将栈中的栈顶元素弹出,然后判断是否匹配
3. 如果匹配,接着遍历
4. 如果不匹配,那么整个字符串就不是一个有效的括号组合,返回False
5. 遍历结束,如果栈是空的,那么字符串就是有效的括号组合,返回True,如果栈中还有元素,那么就不是一个有效的括号组合,返回False
代码:
def is_valid(s: str) -> bool: stack = [] # 栈 dict = {')': '(', '}': '{', ']': '['} for i in s: if i in dict: r = stack.pop() if stack else "#" if r != dict[i]: return False else: stack.append(i) return not stack

浙公网安备 33010602011771号