python判断圆括号方括号花括号是否匹配

import random

def check(lis):
    temp=[]
    qualified={}
    #创建空字典用于存储判断结果
    open="{[("
    close=")]}"
    open_close_dict={"}":"{","]":"[",")":"("}
    #创建左右括号匹配字典
    for i in lis:
        j=0
        flag=True #初始化flag为True
        while j<len(i):
            if i[j] in open:
                temp.append(i[j])
                j+=1
            elif i[j] in close:
                if len(temp)==0:
                    #如果存储的左括号数量为0,也就是没有对应的左括号与之匹配则匹配不成功
                    flag=False
                    break 
                compare=temp[-1]
                #查看最后一个被存入列表的左括号
                if open_close_dict[i[j]]!=compare:
                    #如果右括号与列表中存储的最后一个左括号不匹配则匹配不成功
                    flag=False
                    break                    
                elif open_close_dict[i[j]]==compare: 
                    #如果右括号与列表中存储的最后一个左括号匹配则弹出左括号
                    temp.pop()
                    j+=1    
        if len(temp)!=0:
            #如果匹配循环结束,还有多余的左括号则匹配不成功
            flag=False
        qualified[i]=flag  
        #将匹配结果存入字典
        temp=[]  
        #将temp置空开始下一个字符串的匹配
    print(qualified)

l=["](([]))()[][","(([]))()[]","()[]{}(())""((()))",")(()()())((()))","(([]))()[]","(([}]))({})[]","(([{}]))({})[]",")(([{}]))"]
check(l)


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值