Menu
CoddyTech

Evaluate Reverse Polish Notation

ŚrednieStospython iconjava iconcpp iconc iconjs icon+10

Otrzymujesz wyrażenie arytmetyczne zapisane w odwrotnej notacji polskiej jako tablicę tokenów. Każdy operator występuje bezpośrednio po swoich dwóch operandach, więc 3 4 + oznacza 3 + 4, a 3 4 + 2 * oznacza (3 + 4) * 2, bez nawiasów. Każdy token jest liczbą całkowitą lub jednym z operatorów +, -, * i /.

Zwróć wartość wyrażenia. Dzielenie zaokrągla wynik w kierunku zera: 7 / 2 to 3, a -7 / 2 to -3.

Funkcja

evalRPN(tokens: string-array) → integer
tokensstring-array
liczby i operatory wyrażenia, w kolejności
Zwracainteger
wartość wyrażenia

Ograniczenia

  • 1 ≤ tokens.length ≤ 104
  • Każdy token to +, -, *, / lub liczba całkowita z zakresu od -200 do 200, zapisana w systemie dziesiętnym, z poprzedzającym ją znakiem minus, jeśli jest ujemna.
  • tokens jest poprawnym wyrażeniem w odwrotnej notacji polskiej.
  • Nie dochodzi do dzielenia przez zero, a każda wartość pośrednia i końcowa jest większa niż -231 i mniejsza niż 231.

Przykłady

Wejście
tokens = ["8", "3", "-", "4", "*"]
Wyjście
20
Wyjaśnienie
Operator - jest stosowany najpierw do 8, a potem do 3, w tej kolejności, więc daje 5, a nie -5. Następnie * mnoży tę 5 przez 4, co daje 20.
challenge icon

Pytanie dodatkowe

Czy potrafisz odtworzyć wyrażenie w zwykłym zapisie, na przykład (3 + 4) * 2, dodając nawiasy tylko tam, gdzie zmieniają znaczenie?

Zresetuj kod
def evalRPN(tokens):
    # Wpisz tutaj kod

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

20