Menu
CoddyTech

Evaluate Reverse Polish Notation

中等栈python iconjava iconcpp iconc iconjs icon+10

你会得到一个用逆波兰表示法表示的算术表达式,它是一个由词元组成的数组。每个运算符都紧跟在它的两个操作数之后,因此 3 4 + 表示 3 + 4,而 3 4 + 2 * 表示 (3 + 4) * 2,不需要括号。每个词元都是一个整数,或者是运算符 +、-、* 和 / 之一。

返回表达式的值。除法向零截断:7 / 2 的结果是 3,而 -7 / 2 的结果是 -3。

函数

evalRPN(tokens: string-array) → integer
tokensstring-array
该表达式中的数字和运算符,按顺序排列
返回值integer
表达式的值

约束条件

  • 1 ≤ tokens.length ≤ 104
  • 每个标记都是 +、-、*、/,或用十进制表示的整数,范围为 -200 到 200,负数前面带负号。
  • tokens 是一个有效的逆波兰表达式。
  • 不会发生除以零的情况,并且每个中间值和最终值都大于 -231 且小于 231。

示例

输入
tokens = ["8", "3", "-", "4", "*"]
输出
20
解释
-先作用于 8,再作用于 3,按这个顺序计算,所以结果是 5,而不是 -5。然后,*将这个 5 乘以 4,结果是 20。
challenge icon

进阶

你能用普通记法重新写出这个表达式吗?例如 (3 + 4) * 2,只在会改变含义的地方加括号。

重置代码
def evalRPN(tokens):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

tokens = ["8", "3", "-", "4", "*"]

预期输出

20