栈
思路很简单 遇到左边的括号直接加入栈 按照栈先进后出的思想 如果遍历的字符有符合括号的元素 删除最后一个进入栈的元素
class Solution:
def isValid(self, s: str) -> bool:
n = len(s)
stack = []
dict1 = ('[','(','{') #添加字符串以及字典 左括号以及右括号对应的左括号
dict2 = {']':'[',')':'(','}':'{'}
if n%2 != 0: #如果长度为奇数 返回False
return False
for i in s: #遍历s
if i in dict1: #如果左括号则加入栈
stack.append(i)
else:
if len(stack) == 0: #如果没有左括号可以进入栈则说明没有有效括号
return False
else:
if i in dict2: #有右括号时 判断右括号的值(左括号) 是否与栈最后一个值相同 相同则删除 不同返回False
temp = stack.pop()
while dict2[i] != temp:
return False
return True if not stack else False