Menu
CoddyTech

Evaluate Reverse Polish Notation

ŚrednieStospython iconjava iconcpp iconc iconjs icon+10

Otrzymujesz wyrażenie arytmetyczne w odwrotnej notacji polskiej w postaci tablicy tokenów. W tej notacji każdy operator występuje zaraz po swoich dwóch operandach, więc 3 4 + oznacza 3 + 4, a 3 4 + 2 * oznacza (3 + 4) * 2 — nawiasy nie są potrzebne. Każdy token jest liczbą całkowitą albo jednym z operatorów +, -, * i /.

Oblicz wartość wyrażenia i ją zwróć. Dzielenie zachowuje tylko część całkowitą i zaokrągla 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 podanej 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 minusem, 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 - działa na dwóch liczbach przed nim w ich kolejności: najpierw 8, potem 3, więc daje 5, a nie -5. Następnie * mnoży tę 5 przez 4, co daje 20.

lock icon+18 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

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

Zresetuj kod
def evalRPN(tokens):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

20