Menu
CoddyTech

Evaluate Reverse Polish Notation

MoyenPilepython iconjava iconcpp iconc iconjs icon+10

Vous obtenez une expression arithmétique en notation polonaise inversée, sous forme de tableau de jetons. Dans cette notation, chaque opérateur vient juste après ses deux opérandes ; ainsi, 3 4 + signifie 3 + 4 et 3 4 + 2 * signifie (3 + 4) * 2, sans qu’il soit nécessaire d’utiliser des parenthèses. Chaque jeton est un entier ou l’un des opérateurs +, -, * et /.

Évaluez l’expression et renvoyez sa valeur. La division ne conserve que la partie entière et tronque vers zéro : 7 / 2 vaut 3 et -7 / 2 vaut -3.

Fonction

evalRPN(tokens: string-array) → integer
tokensstring-array
les nombres et les opérateurs de l’expression, dans l’ordre
Renvoieinteger
la valeur de l’expression

Contraintes

  • 1 ≤ tokens.length ≤ 104
  • Chaque jeton est +, -, *, / ou un entier compris entre -200 et 200, écrit en notation décimale, avec un signe moins initial lorsqu’il est négatif.
  • tokens est une expression valide en notation polonaise inversée.
  • Aucune division par zéro ne se produit, et chaque valeur intermédiaire et finale est supérieure à -231 et inférieure à 231.

Exemples

Entrée
tokens = ["8", "3", "-", "4", "*"]
Sortie
20
Explication
L’opérateur - s’applique aux deux nombres qui le précèdent dans leur ordre, 8 puis 3, donc il donne 5, et non -5. Ensuite, * multiplie ce 5 par 4, ce qui donne 20.

lock icon+18 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu reconstruire l’expression en notation usuelle, comme (3 + 4) * 2, en ajoutant des parenthèses uniquement là où elles changent le sens ?

Réinitialiser le code
def evalRPN(tokens):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

20