找到反向波兰符号(后缀)表达式的字典顺序?

2024-09-26 22:45:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个python程序来将中缀表达式转换为后缀表达式(又称反向波兰符号)。在我的问题中,只有数字0-9以及运算符*和+。 现在我需要找到表示后缀表达式的字典式最大字符串。 示例:

  • 中缀eq:2*4*3+9*3+5
  • 后缀情商:24*3*93*+5+
  • 莱克斯。最大:243**93*5++<;----我不知道怎么弄到这个

Tags: 字符串lt程序示例字典表达式符号运算符
1条回答
网友
1楼 · 发布于 2024-09-26 22:45:40

考虑到这些限制条件(只有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++')

相关问题 更多 >

    热门问题