# 题目
力扣链接: 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
2
3
4
5
6
7
8
9
10
11
12
13
希望大家一起加油,搞掂算法题
!