输入一个表达式(长度小于100),该表达式可以包括开括号、闭括号、数字、符号和字母,例如:
Y = 4 * 5 + (x 7) * 10
请编写一个程序来查找不平衡的括号。在一行中输出表达式,并在表达式下面标记不平衡的括号。不平衡的左括号被标记为“$”,不平衡的右括号被标记为“?”。
输出的例子:
((A+B-7*(6-5)
$$
)(r+5-(e-6))/9-8)(
? ?$
a='((A+B-7*(6-5)'
stack=[]
error=[]
for i,j in enumerate(a):
if j=='(':
stack.append([i,j])
if j==')':
if stack:
if stack[-1][-1]=='(':
stack.pop()
else:
error.append((i,1))
else:
error.append((i,1))
while stack:
temp=stack.pop()
if temp[-1]=='(':
error.append((temp[0],2))
else:
error.append((temp[0],1))
L=[' ' for _ in range(len(a))]
for i in error:
if i[-1]==1:
L[i[0]]='?'
else:
L[i[0]]='$'
print(a)
print(''.join(L))
(r+5-(e-6))/9-8)(
不应该是只有倒数第二个和倒数第一个不平衡吗,怎么有3个不平衡