leetcode系列之有效的括号.md

2022/6/13 leetcode

# 题目

力扣链接: https://leetcode-cn.com/problems/valid-parentheses/ (opens new window)

# 思路

我们可以维护一个栈(stack),学过数据结构的同学都知道,栈的特点就是: 先进后出,后进先出

我们遍历字符串,当字符为左括号的时候,我们就入栈,否则我们就出栈,并且判断是不是和我们的右括号匹配。

比如这样的数据: [{()}]

按照流程,前面3个字符都是左括号,都压入栈,第四个是")",那么栈顶元素出栈: "(",因为2个括号是匹配的,所以我们继续遍历。

如果遍历完了,栈为空了,说明括号是成双成对出现的,否则则不是。所以我当时写的是这样的代码,不得不说,有ide加成还是很大的。

要注意的地方有一个: 如果第一个字符就是右括号,stack里面没有元素,所以直接返回错误,这个地方要注意。

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        for w in s:
            if w == "{" or w == "[" or w == "(":
                stack.append(w)
                continue
            if len(stack) == 0:
                return False
            out = stack.pop()
            if out == "{" and w != "}" or out == "[" and w != "]" or out == "(" and w != ")":
                return False
        return len(stack) == 0
1
2
3
4
5
6
7
8
9
10
11
12
13

希望大家一起加油,搞掂算法题