刷Leetcode算法的第二天

今天是刷LT的第二天,好好干饭,好好努力,好好加油哦!

leetcode题目3
检查是否所有括号都已配对。即是否刚好完全配对好

  1. 左括号必须用相同类型的右括号闭合
  2. 左括号必须以正确的顺序闭合

例子如下:

输入:s = "([)]"
输出:false
输入:s = "()[]{}"
输出:true

首先将所有的括号符号列出来,作为一个配对
dic = {’{’: ‘}’, ‘[’:’]’, ‘(’:’)’,’?’:’?’}
要检查是否所有的括号都配对好
首先是先把开始出现的符号 收集在在一个列表
如果出现了配对的符号,则pop出去那个符号。
一直这样做下去,直到最后,如果列表剩下问号
则表示刚刚好完全配对。
如果还有剩的符号,则表示没有完全配对。

首先要理解pop函数的用法
pop() 函数用于移除列表中的一个元素(默认最后一个元素)
并且返回该元素的值。

test = ['Google', 'Runoob', 'Taobao']
list_pop=test.pop()
print( "删除的项为 :", list_pop)
print( "列表现在为 : ", test)
输出为:
删除的项为 : Taobao
列表现在为 :  ['Google', 'Runoob']

也可以指定pop走哪一个

test = ['Google','Runoob','Taobao']
list_pop=test.pop(1)
print( "删除的项为 :", list_pop)
print( "列表现在为 : ", test)
输出为:
删除的项为 : Runoob
列表现在为 :  ['Google', 'Taobao']

所以现在利用pop函数,如果匹配的话就pop出去元素

def isValid(s: str) -> bool:
‘’‘
s是需要检查的字符
返回是否配对成功
’‘’
    dic = {'{': '}', '[':']', '(':')','?':'?'}   #列出所有的括号配对
    stack = ['?']                                #列表中有问号
    for c in s:                                  #对于字符s里 每个符号          
        if c in dic: 
        #如果在dic字典里的前面,即keys:'{','[','(','?',则录入stack里                         
            stack.append(c)
        elif dic[stack.pop()]!=c:               
        #否则就是dic的values,即'}', ']',  ')','?'
        #这个时候,就要pop出相对应的keys 即 dic[stack.pop()],顺序也很重要
            return False 
    return len(stack) == 1                        #最后只剩问号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jianafeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值