题目:

有效的括号 - 20

 

学习来自 -- 各位大佬

思路一:

利用栈的思想,合适的括号对储存为字典,利用下一个元素 == 栈弹出的元素 比较,  有点慢

代码一:

class Solution:

    def isValid(self, s):

        stack = []
        dict1 = {"(":")", "{":"}", "[":"]"}

        for elem in s:
            if elem in dict1.keys():
                stack.append(elem)
            elif elem in dict1.values():
                if stack == [] or dict1[stack.pop()] != elem:
                    return False
        return stack == []

有效的括号 - 20

 

思路二:

有点取巧了, 很牛逼,正确的括号对,可能可以去除 "()", "{}", "[]"  ,replace --> "" 空 , 从里面到外层进行替换,

但是提交后有点慢?? 用IDE 对比了一下,奇怪了

代码二:

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

有效的括号 - 20

有效的括号 - 20

 

思路三,原理基本与1相同,但是慢很多

class Empty(Exception):
    pass

class ArrayStack:

    def __init__(self):
        self._data = []

    def len(self):
        return len(self._data)

    def is_empty(self):
        return len(self._data) == 0

    def push(self, item):
        return self._data.append(item)

    def top(self):
        if self.is_empty():
            raise Empty("Stack is empty")
        return self._data[-1]

    def pop(self):
        if self.is_empty():
            raise Empty("Stack is empty")
        return self._data.pop()

class Solution3:

    def isValid(self, s):

        lefty = "({["
        righty = ")}]"
        S = ArrayStack()
        for c in s:
            if c in lefty:
                S.push(c)
            elif c in righty:
                if S.is_empty():
                    return False
                if righty.index(c) != lefty.index(S.pop()):
                    return False
        return S.is_empty()

 

 

IDE 结果:

第一个程序运行时间: 9.5367431640625e-07
第二个程序运行时间: 2.2172927856445312e-05
第三个程序运行时间: 8.821487426757812e-06
三个程序,最短时间 =  9.5367431640625e-07

 

 

相关文章:

  • 2021-07-03
  • 2022-01-06
  • 2021-11-22
  • 2021-07-03
猜你喜欢
  • 2021-11-17
  • 2021-03-30
  • 2021-04-16
  • 2021-06-06
相关资源
相似解决方案