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 False
temp=stack.pop()
if temp !='(':
return False
elif i in('}'):
if not stack:
return False
temp=stack.pop()
if temp !='{':
return False
elif i in(']'):
if not stack:
return False
temp=stack.pop()
if temp !='[':
return False
if stack: # 这种情况是,右半部分的括号全部匹配结束后, 栈元素还有剩余( 即左括号多了一部分)
return False
return 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 False
temp=stack.pop()
if temp !=i:
return False
if stack: # 这种情况是,右半部分的括号全部匹配结束后, 栈元素还有剩余( 即左括号多了一部分)
return False
return True