leetcode---------有效的括号(栈)

解法:

看到这些判断左右对称的题,首先想到的就是用栈。

首先指定括号间的配对关系,例如 “()”,“[ ]”,“{ }”。用一个变量map_dict装着,让程序知道“)”和“(”,“]”和“[”是配对的。

然后把不在map_dict的key中的字符放如栈stack中,等待匹配。

若遍历到map_dict的key中的字符(右括号),则把栈顶字符出栈,判断出栈的这个字符是否是遍历到的右括号所对应的左括号。

是则继续循环,不是则直接返回False。

最后,要是有效的括号字符,栈最后一定为空,因为有多少个左括号,就有多少个右括号匹配。若非空,则返回False

class Solution(object):
    def isValid(self, s):
        stack = []
        map_dict = {')':'(',']':'[','}':'{'}
        for char in s:
            if char in map_dict:
                top_char = stack.pop()
                if top_char != map_dict[char]:
                    return False
            else:
                stack.append(char)
        return not stack

s = '(([]))'
ss = Solution()
print(ss.isValid(s))  #True

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值