Menu
CoddyTech

Evaluate Reverse Polish Notation

MedioStackpython iconjava iconcpp iconc iconjs icon+10

Ricevi un'espressione aritmetica in notazione polacca inversa, sotto forma di array di token. In questa notazione ogni operatore segue immediatamente i suoi due operandi, quindi 3 4 + significa 3 + 4 e 3 4 + 2 * significa (3 + 4) * 2, senza bisogno di parentesi. Ogni token è un intero o uno degli operatori +, -, * e /.

Valuta l'espressione e restituiscine il valore. La divisione conserva solo la parte intera e tronca verso zero: 7 / 2 è 3 e -7 / 2 è -3.

Funzione

evalRPN(tokens: string-array) → integer
tokensstring-array
i numeri e gli operatori dell’espressione, in ordine
Restituisceinteger
il valore dell'espressione

Vincoli

  • 1 ≤ tokens.length ≤ 104
  • Ogni token è +, -, *, / oppure un numero intero compreso tra -200 e 200, scritto in notazione decimale, con un segno meno iniziale se è negativo.
  • tokens è un'espressione valida in notazione polacca inversa.
  • Nessuna divisione per zero si verifica e ogni valore intermedio e finale è maggiore di -231 e minore di 231.

Esempi

Input
tokens = ["8", "3", "-", "4", "*"]
Output
20
Spiegazione
- si applica ai due numeri che lo precedono nel loro ordine, 8 e poi 3, quindi dà 5, non -5. Poi * moltiplica quel 5 per 4, dando 20.

lock icon+18 test nascosti all’invio

challenge icon

Per approfondire

Riesci a ricostruire l’espressione nella notazione ordinaria, come (3 + 4) * 2, aggiungendo parentesi solo dove cambiano il significato?

Ripristina il codice
def evalRPN(tokens):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

20