Leetcode20: Valid Parentheses

来源:互联网 发布:java防止表单重复提交 编辑:程序博客网 时间:2024/06/10 04:51

这题的答题思路基本是对了,用字典来解决,不过,还是没有对stack的应用太熟悉,还需练习。


class Solution(object):    def isValid(self, s):        """        :type s: str        :rtype: bool        """        if len(s)%2 !=0:         #如果元素个数是单数,直接枪毙            return False        if not s:                #如果是空字符串,返回True            return True        a={')':'(', '}':'{', ']':'['}   #这题的关键,将结尾括号和开始括号一一对应起来,并且用结尾符号作为键        stack = []                      #初始化一个列表,作为stack的结构        for i in s :                    #历遍s的每个元素            if i in '({[':              #如果元素是开始括号的一种                stack.append(i)         #把元素添加进stack            elif i in ')}]':            #如果是结尾符号                if not stack:           #如果此时stack是空的,直接返回False,比如"[])"这种情况                    return False                elif stack and stack.pop() != a[i]: #如果stack非空,但是最后一个元素和当前元素再字典a里面取出的值不一样                    return False                    #也返回False            else:                return False            #如果i不在以上范围内,直接返回False        if stack:                       #如果结束历遍以后,stack还是非空,返回False            return False        else:                           #如果历遍结束以后,stack为空,则返回True            return True


0 0
原创粉丝点击