Menu
CoddyTech

Evaluate Reverse Polish Notation

SedangStackpython iconjava iconcpp iconc iconjs icon+10

Kamu mendapatkan ekspresi aritmetika dalam notasi Polandia terbalik, sebagai sebuah array token. Setiap operator muncul tepat setelah kedua operandnya, jadi 3 4 + berarti 3 + 4 dan 3 4 + 2 * berarti (3 + 4) * 2, tanpa tanda kurung. Setiap token adalah bilangan bulat atau salah satu operator +, -, *, dan /.

Kembalikan nilai ekspresi tersebut. Pembagian dibulatkan menuju nol: 7 / 2 adalah 3 dan -7 / 2 adalah -3.

Fungsi

evalRPN(tokens: string-array) → integer
tokensstring-array
angka dan operator dalam ekspresi, secara berurutan
Mengembalikaninteger
nilai dari ekspresi

Batasan

  • 1 ≤ tokens.length ≤ 104
  • Setiap token adalah +, -, *, /, atau bilangan bulat dari -200 hingga 200 yang ditulis dalam desimal, dengan tanda minus di depan jika nilainya negatif.
  • tokens merupakan ekspresi yang valid dalam notasi Polandia terbalik.
  • Tidak terjadi pembagian dengan nol, dan setiap nilai antara maupun nilai akhir lebih besar dari -231 dan lebih kecil dari 231.

Contoh

Input
tokens = ["8", "3", "-", "4", "*"]
Output
20
Penjelasan
Operator - diterapkan pada 8 lalu 3, dalam urutan itu, sehingga hasilnya 5, bukan -5. Kemudian * mengalikan 5 itu dengan 4, sehingga hasilnya 20.
challenge icon

Pertanyaan lanjutan

Bisakah kamu menyusun kembali ekspresi dalam notasi biasa, seperti (3 + 4) * 2, dengan menambahkan tanda kurung hanya jika tanda kurung tersebut mengubah maknanya?

Reset kode
def evalRPN(tokens):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

20