leetcode_20. 有效的括号python

算法思想

利用一个列表模拟堆栈进行匹配,遍历字符串,遇见左括号就进行入栈操作,遇见一次右括号就进行一次出栈,并进行一次比较。例如栈内的符号是:({,下一个遍历的字符是},见到右括号则进行一次出栈操作,进行一次比较,比较的是{和}两个符号,是匹配的,则接着遍历下一个位置。利用字典的键值对特性进行比较

详细代码及注释:

class Solution:
    def isValid(self, s):
        if len(s) % 2 == 1:#偶数个符号才是一定匹配的
            return False

        d = {'{': '}', '[': ']', '(': ')'}
        stack = []
        for i in s:
            # in stack
            if i in d:
                stack.append(i)
            else:
                if not stack or d[stack.pop()] != i:
                    return False

        return stack ==[]

几个小的知识点

1.利用列表可以来模拟堆栈的操作,用append模拟入栈,用pop进行出栈的操作
2.匹配问题的时候可以使用字典来进行匹配
3.如果是对称问题,可以利用这段代码

if len(s) % 2 == 1:
            return False

进行是否为偶数个数的元素
4.注意return stack ==[]这种形式的判断,节省不少的时间

猜你喜欢

转载自blog.csdn.net/qq_37002901/article/details/87900989