有效的括号

last modify

问题简述

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。

20. 有效的括号 - 力扣(LeetCode)

思路

  • 利用栈,遇到左括号就压栈,遇到右括号就出栈;

  • 无效的情况:栈顶与当前遇到的右括号不匹配,或栈为空;

  • 当遍历完所有字符,且栈为空时,即有效;

Python
class Solution:
    def isValid(self, s: str) -> bool:

        stack = []  # 模拟栈
        table = {')':'(', ']': '[', '}': '{'}

        for c in s:
            if c in '([{':
                stack.append(c)
            elif stack and table[c] == stack[-1]:
                stack.pop()
            else:  # 栈为空,且遇到左括号,一定无效
                return False
        
        return len(stack) == 0

Last updated