判断字符串闭合是一道经典的面试题,首先要知道什么样的括号是闭合的:{[{()}]()}
就是一个闭合的字符串。{[{()}]([)]}
这个里面 ([)]
括号不对称,这种就是不闭合。
常见的解法是使用栈进行判断,代码如下:
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-经典面试题:判断字符串括号是否闭合{}[]()