在括号匹配问题中,一般都会采用栈操作,拿到题目的时候第一个思路是用进制来进行标记,后来发现其实有很大的问题,所以也开始用栈来进行解答,但是并不是将所有字符串都压进栈。而是只将左括号压进栈,匹配也只需要考虑栈顶与右括号是否匹配,代码用 Python 写的 :
def main():
totle = eval(input("input data:"))
answer = totle * [1]
for i in range(totle):
items = input()
#items = s.split()
stat = []
for x in items :
if x == '(' :
stat.append(1)
elif x == ')':
if stat[len(stat)-1] == 1 :
stat.pop()
else:
answer[i] = 0
break
elif x == '[':
stat.append(2)
elif x == ']':
if stat[len(stat)-1] == 2 :
stat.pop()
else:
answer[i] = 0
break
elif x == '{':
stat.append(3)
elif x == '}':
if stat[len(stat)- 1 ] == 3:
stat.pop()
else:
answer[i] = 0
break
elif x == '<':
stat.append(4)
elif x == '>':
if stat[len(stat) - 1] == 4:
stat.pop()
else:
answer[i] = 0
break
answer[i] = 0 if stat else 1
for i in answer :
print(i, end =" ")
main()