判断字符串括号{}[]()是否闭合—python实现

判断字符串闭合是一道经典的面试题,首先要知道什么样的括号是闭合的:{[{()}]()} 就是一个闭合的字符串。
{[{()}]([)]} 这个里面 ([)] 括号不对称,这种就是不闭合。

常见的解法是使用栈进行判断,代码如下:

def is_str_close():
    a = "{[()]}"
    b = []
    flag =0
    
    for i in a :
        if i=="{" or i=="[" or i=="(":
            b.append(i)
        elif i=="}" and b.pop()!="{":
            flag =1 
        elif i=="]" and b.pop()!="[":
            flag =1 
        elif i==")" and b.pop()!="(":
            flag =1 
    if len(b)!=0:
        flag=1 
    
    if flag==1:
        print("不闭合")
    elif flag==0:
        print("闭合")

还有一种是不用栈的写法,我觉得这种写法更简单更易于理解:

def is_str_close(a:string):
    a = "{[()]}"
    s1,s2,s3=0,0,0
    for i in range a:
        if i=="{":
            s1 += 1
        if i=="[":
            s2 += 1 
        if i=="(":
            s3 += 1 
        if i=="}":
            s1 -= 1
        if i=="]":
            s2 -= 1 
        if i==")":
            s3 -= 1 
    if s1!=0 or s2!=0 or s3!=0:
        print("不闭合")
    else:
        print("闭合")  
        

参考文章:

判断字符串括号是否闭合(){}[]

python笔记45-经典面试题:判断字符串括号是否闭合{}[]()

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值