Menu
CoddyTech

Evaluate Reverse Polish Notation

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

Bir dizi belirteç olarak, ters Lehçe gösteriminde bir aritmetik ifade alırsınız. Bu gösterimde her işleç iki işleneninden hemen sonra gelir; bu nedenle 3 4 +, 3 + 4 anlamına gelir ve 3 4 + 2 *, parantez gerektirmeden (3 + 4) * 2 anlamına gelir. Her belirteç bir tam sayı ya da +, -, * ve / işleçlerinden biridir.

İfadeyi değerlendirip değerini döndürün. Bölme yalnızca tam sayı kısmını alır ve sıfıra doğru keser: 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 -200 ile 200 arasında, ondalık biçimde yazılmış ve negatifse başında eksi işareti bulunan bir tam sayıdır.
  • tokens, ters Lehçe gösteriminde geçerli bir ifadedir.
  • Sıfıra bölme gerçekleşmez ve tüm ara değerler 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
-, sıralarına göre kendisinden önce gelen iki sayıya, yani önce 8'e sonra 3'e uygulanır; bu nedenle -5 değil, 5 verir. Ardından *, bu 5'i 4 ile çarpar ve 20 verir.

lock iconGönderirken +18 gizli test

challenge icon

Ek soru

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

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

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

20