Menu
CoddyTech

Evaluate Reverse Polish Notation

OrtaYığınpython iconjava iconcpp iconc iconjs icon+10

Bir dizi belirteç olarak ters Polonya gösteriminde bir aritmetik ifade alırsın. Her operatör iki işleneninden hemen sonra gelir; bu nedenle 3 4 +, 3 + 4 anlamına gelir ve 3 4 + 2 *, parantez olmadan (3 + 4) * 2 anlamına gelir. Her belirteç bir tam sayı ya da +, -, * ve / operatörlerinden biridir.

İfadenin değerini döndür. Bölme sıfıra doğru yuvarlanır: 7 / 2, 3 eder ve -7 / 2, -3 eder.

Fonksiyon

evalRPN(tokens: string-array) → integer
tokensstring-array
ifadenin sayıları ve operatörleri, sırasıyla
Döndürürinteger
ifadenin değeri

Kısıtlar

  • 1 ≤ tokens.length ≤ 104
  • Her belirteç +, -, *, / ya da negatifse başında eksi işareti bulunan ve ondalık biçimde yazılmış -200 ile 200 arasında bir tamsayıdır.
  • tokens, ters Lehçe gösteriminde geçerli bir ifadedir.
  • Sıfıra bölme gerçekleşmez ve her ara değer ile son değer -231 değerinden büyük, 231 değerinden küçüktür.

Örnekler

Girdi
tokens = ["8", "3", "-", "4", "*"]
Çıktı
20
Açıklama
- önce 8'e, sonra 3'e uygulanır; bu nedenle -5 değil, 5 sonucunu verir. Ardından *, bu 5'i 4 ile çarpar ve 20 sonucunu verir.
challenge icon

Ek soru

İfadeyi, yalnızca anlamı değiştirdikleri yerlere parantez ekleyerek, (3 + 4) * 2 gibi alışılmış gösterimle yeniden oluşturabilir misin?

Kodu sıfırla
def evalRPN(tokens):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argüman

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

Beklenen Çıktı

20