括号匹配优化版

20. 有效的括号

  1. class Solution:
  2.     def isValid(self, s: str) -> bool:
  3.         stack=[]
  4.         for i in s:
  5.             if i=='(':
  6.                 stack.append(')')
  7.             elif i=='[':
  8.                 stack.append(']')
  9.             elif i=='{':
  10.                 stack.append('}')
  11.             elif not stack or stack[-1]!=i:
  12.                 return False
  13.             else:
  14.                 stack.pop()
  15.         return True if not stack else False

 

在匹配左括号的时候,右括号先入栈,就只需要比较当前元素和栈顶相不相等就可以了,比左括号先入栈代码实现要简单的多了!

法2:

  1. class Solution:
  2.     def isValid(self, s: str) -> bool:
  3.         dic={'(':')','[':']','{':'}'}
  4.         stack=[]
  5.         for i in s:
  6.             if i in dic.keys():
  7.                 stack.append(dic[i])
  8.             elif not stack or stack[-1]!=i:
  9.                 return False
  10.             else:
  11.                 stack.pop()
  12.         return not stack

发表评论