Menu
CoddyTech

Evaluate Reverse Polish Notation

בינונימחסניתpython iconjava iconcpp iconc iconjs icon+10

ניתן לך ביטוי חשבוני בסימון פולני הפוך, כמערך של אסימונים. כל אופרטור מופיע מיד אחרי שני האופרנדים שלו, לכן 3 4 + פירושו 3 + 4 ו־3 4 + 2 * פירושו (3 + 4) * 2, ללא סוגריים. כל אסימון הוא מספר שלם או אחד מהאופרטורים +, -, * ו־/.

החזר את ערך הביטוי. החלוקה מעגלת לכיוון אפס: 7 / 2 הוא 3 ו־-7 / 2 הוא -3.

פונקציה

evalRPN(tokens: string-array) → integer
tokensstring-array
המספרים והאופרטורים של הביטוי, לפי הסדר
מחזירהinteger
הערך של הביטוי

אילוצים

  • 1 ≤ tokens.length ≤ 104
  • כל אסימון הוא +, -, *, / או מספר שלם בין -200 ל־200 הכתוב בבסיס עשרוני, עם סימן מינוס מוביל כאשר הוא שלילי.
  • tokens הוא ביטוי תקין בסימון פולני הפוך.
  • לא מתבצעת חלוקה באפס, וכל ערך ביניים וערך סופי גדול מ־-231 וקטן מ־231.

דוגמאות

קלט
tokens = ["8", "3", "-", "4", "*"]
פלט
20
הסבר
הפעולה - חלה על 8 ואז על 3, בסדר הזה, ולכן התוצאה היא 5 ולא ‎-5. לאחר מכן * מכפילה את ה־5 הזה ב־4, והתוצאה היא 20.
challenge icon

שאלת המשך

האם תוכל לבנות מחדש את הביטוי בסימון רגיל, כמו (3 + 4) * 2, ולהוסיף סוגריים רק במקומות שבהם הם משנים את המשמעות?

איפוס הקוד
def evalRPN(tokens):
    # כתבו כאן את הקוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

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

הפלט הצפוי

20