Menu
CoddyTech

Evaluate Reverse Polish Notation

MoyenPilepython iconjava iconcpp iconc iconjs icon+10

Vous recevez une expression arithmétique en notation polonaise inversée, sous forme de tableau de jetons. 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 parenthèses. Chaque jeton est un entier ou l’un des opérateurs +, -, * et /.

Renvoyez la valeur de l’expression. La division 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 en tête 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
Le - s’applique à 8 puis à 3, dans cet ordre, donc il donne 5, et non -5. Ensuite, * multiplie ce 5 par 4, ce qui donne 20.
challenge icon

Pour aller plus loin

Peux-tu reconstruire l’expression en notation usuelle, telle que (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

Test #1

Test #2

Test #3

Argument

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

Résultat attendu

20