20. 有效的括号

https://leetcode-cn.com/problems/valid-parentheses/

解法一:

用栈,一次扫描输入串,将所有左括号入栈,遇到右括号就与栈顶比对,借助两个字典left和right判断是否成对,成对则弹栈,不成对直接返回False。(注意栈不能为空,否则pop会报错)。遇到右括号且栈为空,说明右括号没有匹配,返回False。

最后判断栈是否为空,为空说明匹配完毕。复杂度O(n)

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        left = {'(':0, '{':1, '[':2}    #左括号字典
        right = {')':0, '}':1, ']':2}   #右括号字典
        for ch in s:
            if ch in left:    #是左括号
                stack.append(ch)
            else:   #是右括号
                if len(stack) > 0 and left[stack[-1]] == right[ch]:
                    stack.pop()
                else:
                    return False
        return len(stack) == 0

2020.3.24

2024.3.30

最后更新于