我编写了一个python程序,用于将中缀表达式转换为后缀表达式(又名反向波兰表示法)。在我的问题中,只显示数字0-9,以及运算符*和+。 我现在需要找到代表后缀方程的按字典顺序排列的最大字符串。 例如:
答案 0 :(得分:0)
鉴于这些约束(只有0到9之间的数字,没有空格,只有乘法和求和),以下内容将按您的要求执行:
expr1 = '2*4*3+9*3+5'
expr2 = '9*3+5+3*4*2'
def reverse_polish_nation(expr):
terms = expr.split('+')
facs = [ sorted(term.split('*')) for term in terms ]
rpn_terms = ['{}{}'.format(''.join(factors),
'*'*(len(factors)-1)) for factors in facs]
rpn_expr = '{}{}'.format(''.join(sorted(rpn_terms)), '+'*(len(rpn_terms)-1))
return rpn_expr
print(reverse_polish_nation(expr1), reverse_polish_nation(expr2) )
# output: ('234**39*5++', '234**39*5++')