问题
我们提供了包含4种类型的括号的字符串-圆(),方形[],卷曲{}和尖括号<>。 目的是检查方括号是否正确。 即任何开头的括号都应在字符串的更远处具有相同类型的结尾括号,并且括号对不应重叠,尽管它们可以嵌套:
input data:
4
(a+[b*c]-{d/3})
(a + [b * c) - 17]
(((a * x) + [b] * y) + c
auf(zlo)men [gy<psy>] four{s}
answer:
1 0 0 1
代码
def only_brackets(str):
aim_list=["(",")","[","]","{","}","<",">"]
str_list=list(str)
result_list=[]
for i in str_list :
if i in aim_list:
result_list.append(i)
return "".join(result_list)
def is_valid(str):
stack=[]
parent_map={")":"(","]":"[","}":"{",">":"<"}
for c in str:
if c not in parent_map:
stack.append(c)
elif not stack or parent_map[c] !=stack.pop():
return 0
return not stack
num=input()
result=[]
for i in range(int(num)):
lineinput=input()
onlyBrackets=only_brackets(lineinput)
answer=is_valid(onlyBrackets)
result.append(int(answer))
print(*result)
在这里用到了堆栈的概念可以参考堆栈介绍
核心解决了以后在这里分了2步走,分别是第一步只保留括号,第二部来判断是否合乎标准,总结后希望以后都改成用函数接口的方式,方便后续修改也更为规范。