LeetCode20题:有效的括号(Python)

#主要的思路就是遍历字符串,遇到左括号就将对应的右括号压入列表然后取出与左括号匹配
#不同情况:1.括号的个数为奇数(){,对应的代码是  if len(s) % 2 == 1:return False
    #         2.类型不匹配[},对应的代码是bracket!=stack.pop()
    #         3.以右括号开始或者右括号多了出来))、([{}]))),对应代码是elif len(stack)==0
    #         4.左括号((多了出来,对应的代码是return len(stack)==0,不等于0就是栈里留了偶数个左括号;等于0就是栈里的括号都匹配完成,返回真
class Solution(object):
    def isValid(self, s):
        if len(s) % 2 == 1:
            return False
        pairs={'{':'}','(':')','[':']'}
        stack=[]
        for bracket in s:
            #如果该字符是左括号就将右括号压入栈
            if bracket in pairs:    #if i in 字典 这个句子的i是指字典里的键而不是值
                stack.append(pairs[bracket])#将右括号放进列表
            #如果是像这种情况([{}])))、)...的话len(stack)==0这个条件就会为真,后面这个条件就是括号类型不匹配
            elif len(stack)==0 or bracket!=stack.pop():
                return False
        #最后的这个return的话是针对((这个情况的话
        return len(stack)==0
if bracket in pairs:

这句代码是想提醒一下我自己:其中的bracket是一个变量,pairs是一个字典类型,这个if语句是判断bracket在不在pairs的键里,不是值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值