Leetcode题解——20. 有效的括号

20. 有效的括号

Leetcode题解——20. 有效的括号_第1张图片

Leetcode题解——20. 有效的括号_第2张图片

题解1:

取巧的解法

class Solution:
    def isValid(self, s: str) -> bool:
        while '{}' in s or '()' in s or '[]' in s:
            s = s.replace('{}', '')
            s = s.replace('[]', '')
            s = s.replace('()', '')
        return s == ''

题解2:

使用栈

step1:初始化栈 S。
step2:依次处理表达式的每个括号。
step3:如果遇到开括号,我们只需将其推到栈上即可。这意味着我们将稍后处理它,让我们简单地转到前面的 子表达式。
step4:如果我们遇到一个闭括号,那么我们检查栈顶的元素。如果栈顶的元素是一个 相同类型的 左括号,那么我们将它从栈中弹出并继续处理。否则,这意味着表达式无效。
step5:如果到最后我们剩下的栈中仍然有元素,那么这意味着表达式无效。

class Solution:
    def isValid(self, s: str) -> bool:
        mapping = {")":"(", "}":"{", "]":"["}

        stack = []

        for char in s:
            if char in mapping:
                top_element = stack.pop() if stack else "!"
                if top_element != mapping[char]:
                    return False
            else:
                stack.append(char)

        return len(stack) == 0

 

 

 

 

你可能感兴趣的:(Leetcode题解——20. 有效的括号)