Menu
CoddyTech

Evaluate Reverse Polish Notation

MittelStackpython iconjava iconcpp iconc iconjs icon+10

Du erhältst einen arithmetischen Ausdruck in umgekehrter polnischer Notation als Array von Tokens. Jeder Operator steht direkt nach seinen beiden Operanden, daher bedeutet 3 4 + 3 + 4 und 3 4 + 2 * (3 + 4) * 2, ganz ohne Klammern. Jedes Token ist eine ganze Zahl oder einer der Operatoren +, -, * und /.

Gib den Wert des Ausdrucks zurück. Bei der Division wird gegen null abgeschnitten: 7 / 2 ist 3 und -7 / 2 ist -3.

Funktion

evalRPN(tokens: string-array) → integer
tokensstring-array
die Zahlen und Operatoren des Ausdrucks, der Reihenfolge nach
Gibt zurückinteger
der Wert des Ausdrucks

Einschränkungen

  • 1 ≤ tokens.length ≤ 104
  • Jedes Token ist +, -, *, / oder eine ganze Zahl von -200 bis 200, die als Dezimalzahl mit einem vorangestellten Minuszeichen geschrieben wird, wenn sie negativ ist.
  • tokens ist ein gültiger Ausdruck in umgekehrter polnischer Notation.
  • Es tritt keine Division durch null auf, und jeder Zwischen- und Endwert ist größer als -231 und kleiner als 231.

Beispiele

Eingabe
tokens = ["8", "3", "-", "4", "*"]
Ausgabe
20
Erklärung
Das - wird auf 8 und dann auf 3 angewendet, in dieser Reihenfolge, und ergibt somit 5, nicht -5. Dann multipliziert * diese 5 mit 4, was 20 ergibt.
challenge icon

Weiterführende Frage

Kannst du den Ausdruck in normaler Schreibweise rekonstruieren, etwa (3 + 4) * 2, und Klammern nur dort hinzufügen, wo sie die Bedeutung ändern?

Code zurücksetzen
def evalRPN(tokens):
    # Schreibe hier Code

Test #1

Test #2

Test #3

Argument

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

Erwartete Ausgabe

20