Menu
CoddyTech

Evaluate Reverse Polish Notation

MedioPilapython iconjava iconcpp iconc iconjs icon+10

Recibes una expresión aritmética en notación polaca inversa, como una matriz de tokens. Cada operador aparece justo después de sus dos operandos, así que 3 4 + significa 3 + 4 y 3 4 + 2 * significa (3 + 4) * 2, sin paréntesis. Cada token es un entero o uno de los operadores +, -, * y /.

Devuelve el valor de la expresión. La división trunca hacia cero: 7 / 2 es 3 y -7 / 2 es -3.

Función

evalRPN(tokens: string-array) → integer
tokensstring-array
los números y operadores de la expresión, en orden
Devuelveinteger
el valor de la expresión

Restricciones

  • 1 ≤ tokens.length ≤ 104
  • Cada token es +, -, *, / o un entero de -200 a 200 escrito en notación decimal, con un signo menos inicial cuando es negativo.
  • tokens es una expresión válida en notación polaca inversa.
  • No se produce ninguna división por cero, y todos los valores intermedios y finales son mayores que -231 y menores que 231.

Ejemplos

Entrada
tokens = ["8", "3", "-", "4", "*"]
Salida
20
Explicación
- se aplica a 8 y después a 3, en ese orden, así que da 5, no -5. Después, * multiplica ese 5 por 4, lo que da 20.
challenge icon

Para ir más allá

¿Puedes reconstruir la expresión en notación habitual, como (3 + 4) * 2, añadiendo paréntesis solo donde cambien el significado?

Restablecer código
def evalRPN(tokens):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumento

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

Salida Esperada

20