前缀表达式/逆波兰表达式Python实现
实例:
1+((2+3)*4)-5 -> 1 2 3 + 4 * + 5 -
(1+2*3-4*5)/2+3 -> 123*+45*-2/3+
代码实现
def infix_to_postfix(expression):
operators = {'+': 1, '-': 1, '*': 2, '/': 2, '(': 0, ')': 0}
stack = []
postfix = ""
for char in expression:
if char.isdigit():
postfix += char
elif char == '(':
stack.append(char)
elif char == ')':
while stack and stack[-1] != '(':
postfix += stack.pop()
stack.pop()
else: # operator
while stack and operators[char] <= operators.get(stack[-1], 0):
postfix += stack.pop()
stack.append(char)
while stack:
postfix += stack.pop()
return postfix
infix_expression = "(1+2*3-4*5)/2+3"
postfix_expression = infix_to_postfix(infix_expression)
print("Postfix expression:", postfix_expression)