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.

lock icon+18 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

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

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

מקרה 1

מקרה 2

מקרה 3

קלט

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

צפוי

20