0%

Leetcode 20 有效的括号

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 每个右括号必须闭合对应的左括号。

用一个栈来存储左括号,遇到右括号时,判断栈顶元素是否与之匹配,若匹配则弹出栈顶元素,否则将右括号压入栈中。最后判断栈是否为空即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution:
def isValid(self, s: str) -> bool:
stack = []
matched = ["()", "{}", "[]"]

for st in s:
if len(stack) == 0:
stack.append(st)
continue
if stack[-1]+st in matched:
stack.pop()
else:
stack.append(st)

if len(stack) == 0:
return True
else:
return False