Leetcode每日一刷-20( 有效的括号)

第一种:

# 利用栈的特点,先进后出,左符号添加,用右符号找左符号删除,
# 左加右减,有右无左,为无效 原则
# 判断右符号找不到左符号说明 没有配对的 返回False
class Solution:
  def isValid(self, s):
    stack = []

    dict = {"]": "[", "}": "{", ")": "("}
    for item in s:
      if item in dict.values():
        stack.append(item)
      elif item in dict.keys():
        if stack == [] or dict[item] != stack.pop() :
          return False
      else:
        if item != ' ':
          return False
  return stack == []


# s = '(( )[]){}'
# s = '(][)'
# s = '['
s = ' '
sol = Solution()
print(sol.isValid(s))

第二种:

# 这种方法不建议使用,特别是符号嵌套复杂的情况,但是这种想法很秒

有点像消消乐 ,有就消除,不断循环直至没有,如果剩下的就是不符合条件的

class Solution:
  def isValid(self, s):
    s.replace(' ','')
    while '()' in s or '[]' in s or '{}' in s:
      s = s.replace('{}', '')
      s = s.replace('[]', '')
      s = s.replace('()', '')
    return s == ''

# s = '(( )[]){}'
# s = '(][)'
# s = '['
s = ' '
sol = Solution()
print(sol.isValid(s))

猜你喜欢

转载自www.cnblogs.com/MinHuaiL/p/10747299.html