前言
最简单的一集(
能用栈解决的原因:正确的括号排布同栈一样,遵循“先进后出”原则(在括号这里可以理解成大括号在外头,那么大括号一定也是最后一个字符)
题解
首先看代码:
class Solution:
def isValid(self, s: str) -> bool:
n = len(s)
if n <= 1:
return False
smap = {
"(" : ")",
"[" : "]",
"{" : "}"
}
stack = []
for i in range(n):
item = s[i]
if item in smap:
stack.append(item)
else:
if stack:
left = stack.pop()
if smap[left] != item:
return False
else:
return False
return len(stack) == 0
smap存好所有左边括号对应的右边括号。
建立空栈stack。
遍历字符串,将符合smap中key的左半边括号压入栈中;
不符合的显然都是右半边括号,我们用left表示出栈的左括号,用它来对应接下来的item看是否相等,只要不等就直接False。