lintcode 有效的括号序列

Posted Criya

tags:

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

题目要求

给定一个字符串所表示的括号序列,包含以下字符: ‘(‘, ‘)‘‘{‘‘}‘‘[‘ and ‘]‘, 判定是否是有效的括号序列。

样例

括号必须依照 "()" 顺序表示, "()[]{}" 是有效的括号,但 "([)]"则是无效的括号。

分析

栈的简单应用,遍历字符串,遇到左括号push,遇到右括号就pop判断匹配,这里利用python的字典来方便匹配。还需要考虑到字符串已经遍历完但是栈里面元素是否有无的情况。用python写注意缩进,第一次直接在lintcode网站上写没有按照PEP8规范,搞得我WA了半天,后来直接拖出去sublime写再复制回去就好了。

class Solution:
    """
    @param: s: A string
    @return: whether the string is a valid parentheses
    """
    def isValidParentheses(self, s):
        # write your code here
        stack = []
        book = {
            }: {,
            ]: [,
            ): (,
        }
        list = [(, {, []
        for i in s:
            if i in list:
                stack.append(i)
            else:
                if len(stack) == 0:
                    return False
                p = stack.pop()
                if p != book[i]:
                    return False
        if len(stack) == 0:
            return True
        else:
            return False
        

 

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

423 有效的括号序列

括号序列/有效的括号

第78题给定一个括号序列,判断是否是一个有效的括号序列

数据结构与算法-有效括号序列

栈题型归纳

leetcode-----32. 最长有效括号