欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-27 17:00:29
最近面试字节跳动的游戏发行测试工程师的时候,面试官出了这道题(本人致力于算法和数据方面的测试,无意做游戏方面的测试工作,好像是猎头给投的简历)判断字符串闭合是一道经典的面试题,首先要知道什么样的括号是闭合的:{[{()}]()}就是一个闭合的字符串。{[{()}]([)]}这个里面([)]括号不对称,这种就是不闭合。常见的解法是使用栈进行判断,代码如下:def is_str_close(a): b = [] flag = True for i in a: ......

最近面试字节跳动的游戏发行测试工程师的时候,面试官出了这道题(本人致力于算法和数据方面的测试,无意做游戏方面的测试工作,好像是猎头给投的简历)

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

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

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-经典面试题:判断字符串括号是否闭合{}[]()

 

本文地址:https://blog.csdn.net/sanmi8276/article/details/107307925