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. En esta notación, 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 necesidad de paréntesis. Cada token es un número entero o uno de los operadores +, -, * y /.

Evalúa la expresión y devuelve su valor. La división conserva solo la parte entera y 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 formato 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 los dos números que aparecen antes en ese orden, 8 y después 3, así que da 5, no -5. Después, * multiplica ese 5 por 4, lo que da 20.

lock icon+18 pruebas ocultas al enviar

challenge icon

Para ir más allá

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

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

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

20