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 Token. In dieser Notation steht jeder Operator direkt hinter seinen beiden Operanden, sodass 3 4 + 3 + 4 bedeutet und 3 4 + 2 * (3 + 4) * 2 bedeutet, ohne dass Klammern erforderlich sind. Jedes Token ist eine ganze Zahl oder einer der Operatoren +, -, * und /.

Werte den Ausdruck aus und gib seinen Wert zurück. Bei der Division bleibt nur der ganzzahlige Anteil erhalten, und es 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 Reihe 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 in Dezimalschreibweise geschrieben ist und bei negativen Zahlen ein vorangestelltes Minuszeichen hat.
  • tokens ist ein gültiger Ausdruck in umgekehrter polnischer Notation.
  • Es kommt zu keiner Division durch null, 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 der Reihenfolge nach auf die beiden Zahlen davor angewendet, zuerst 8, dann 3, also ergibt es 5 und nicht -5. Dann multipliziert * diese 5 mit 4, was 20 ergibt.

lock icon+18 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

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

Code zurücksetzen
def evalRPN(tokens):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

20