有效的括号

Posted tsdblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有效的括号相关的知识,希望对你有一定的参考价值。

给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。
括号必须以正确的顺序关闭,”()” 和 “()[]{}” 是有效的但是 “(]” 和 “([)]” 不是。

思路:

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

代码如下:

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 ==[]

 

以上是关于有效的括号的主要内容,如果未能解决你的问题,请参考以下文章

括号序列/有效的括号

需要一种有效的方法来避免使用 Laravel 5 重复代码片段

为啥这个 javascript 代码有效并且在括号内使用逗号? [复制]

20. 有效的括号

栈——有效括号问题

刷题4:有效的括号