Leetcode 20 有效的括号 (栈)
eg:举例{[]}()
1.不断遍历,遇到左半边的符号就进栈,
遇到右半边就出栈一个比较:出栈的和遇到的是否配对
2.最终还有没有剩下的(未出栈or留下的)
进行模式识别:先进后出:用栈
解法1
class Solution:
def isValid(self, s: str) -> bool:
if len(s) == 0:return True
if len(s)%2 == 1:return False
# 【栈】
# 举例{[]}()
# 1不断遍历,遇到左半边的符号就进栈,遇到右半边就出栈一个比较:出栈的和遇到的是否配对
# 2最终还有没有剩下的(未出栈or留下的)
stack = [] #创建一个栈
group = []
standered = [
["{","}"],
["[","]"],
["(",")"]
]
for i in s:
if i =='{'or i == '(' or i == '[':
stack.append(i) # 遇到左半边的符号就进栈
else:
if len(stack)==0:
return False
break
temp = stack.pop() # 弹出栈
group = [temp,i]
if group not in standered: #比较
return False
break
if len(stack) != 0:
return False
else:
return True