20. 有效的括号 - 力扣(LeetCode)
class Solution:def isValid(self, s: str) -> bool:stack = []for i in s :if i in ('(','{','[' ):stack.append(i)elif i in (')' ):# 这种情况是 栈弹出元素为空时候 ,右半部分的括号多出来一些 比如: [()]} if not stack:return Falsetemp=stack.pop()if temp !='(':return False elif i in('}'):if not stack:return Falsetemp=stack.pop()if temp !='{':return False elif i in(']'):if not stack:return Falsetemp=stack.pop()if temp !='[':return False if stack: # 这种情况是,右半部分的括号全部匹配结束后, 栈元素还有剩余( 即左括号多了一部分) return Falsereturn True
代码随想录中的 先 强行匹配 做了映射对应关系, 然后再判断映射的右半部分 是不是 符合真实的右侧部分的信息 ,
class Solution:def isValid(self, s: str) -> bool:stack = []for i in s :# if i in ('(','{','[' ):# stack.append(i)if i == '(':stack.append(')')elif i== '[':stack.append(']')elif i == '{':stack.append('}')# elif i in (')' ):# # 这种情况是 栈弹出元素为空时候 ,右半部分的括号多出来一些 比如: [()]} # if not stack:# return False# temp=stack.pop()# if temp !=i:# return False # elif i in('}'):# if not stack:# return False# temp=stack.pop()# if temp !=i:# return False # elif i in(']'):# if not stack:# return False# temp=stack.pop()# if temp !=i:# return False else:if not stack:return Falsetemp=stack.pop()if temp !=i:return False if stack: # 这种情况是,右半部分的括号全部匹配结束后, 栈元素还有剩余( 即左括号多了一部分) return Falsereturn True