Leetcode20: Valid Parentheses

这题的答题思路基本是对了,用字典来解决,不过,还是没有对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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值