问题描述
我花了很多时间试图理解问题并提出解决方案。问题是当包含括号时,它不起作用。我将检查条件添加到堆栈,因为它显示IndexError。这是我的第一篇文章,因此请放轻松。
def pres(stack,input1):
if(stack):
top1 = stack[-1]
precedence = {'^': 3,'/': 2,'*': 2,'+': 1,'-': 1}
try:
if(precedence[top1] >= precedence[input1]):
return True
else:
return False
except KeyError:
return False
else:
return False
def func1(arr,capacity):
stack = []
output = []
operators = ['+','-','*','/','^']
top = -1
for ch in arr:
if(ch.isalpha()) == True:
output.append(ch)
elif(ch == '('):
stack.append(ch)
top += 1
elif(ch == ')'):
while((stack) and stack[-1] != '('):
if(stack):
a = stack.pop()
top -= 1
output.append(a)
else:
output.append('$')
if((stack) and stack[-1] != '('):
return -1
elif(stack):
stack.pop()
else:
while((top != -1) and pres(stack,ch)):
if(stack):
a = stack.pop()
top -= 1
output.append(a)
else:
output.append('$')
top += 1
stack.append(ch)
while stack:
if(stack):
a = stack.pop()
top -= 1
output.append(a)
else:
output.append('$')
print(*output,sep='')
arr='a+b*(c^d-e)^(f+g*h)-i'
arr = 'a+b-i+g-h*j'
func1(arr,len(arr))
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)