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. Ogni operatore viene subito dopo i suoi due operandi, quindi 3 4 + significa 3 + 4 e 3 4 + 2 * significa (3 + 4) * 2, senza parentesi. Ogni token è un intero o uno degli operatori +, -, * e /.

Restituisci il valore dell’espressione. La divisione 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, nell’ordine
Restituisceinteger
il valore dell'espressione

Vincoli

  • 1 ≤ tokens.length ≤ 104
  • Ogni token è +, -, *, / oppure un numero intero da -200 a 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 prima a 8 e poi a 3, in quest'ordine, quindi dà 5, non -5. Poi * moltiplica quel 5 per 4, dando 20.
challenge icon

Per approfondire

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

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

Test #1

Test #2

Test #3

Argomento

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

Output atteso

20