Valid Parentheses
מחרוזת של סוגריים היא מאוזנת כאשר כל סוגר פותח נסגר על ידי סוגר מאותו הסוג, והזוגות נמצאים זה בתוך זה ולא חופפים. יש שלושה סוגים: עגולים (), מרובעים [] ומסולסלים {}.
לדוגמה, {[()()]} מאוזנת: כל זוג נסגר בתוך הזוג שעוטף אותו. אבל {(}) אינה מאוזנת: הסוגר המסולסל נסגר בעוד שהסוגר העגול שנפתח אחריו עדיין ממתין. גם מחרוזת כמו (( אינה מאוזנת, כי שום דבר לא סוגר את שני הסוגרים הפותחים.
כתבו פונקציה בשם isValid שמקבלת מחרוזת s המורכבת רק מהתווים (, ), [, ], { ו־}, ומחזירה true כאשר הסוגריים בה מאוזנים, ואחרת false.
מאוזנים פירושו שכל סוגר סוגר תואם לסוגר הפותח האחרון שעדיין פתוח, שניהם מאותו סוג, ושלא נשארים סוגריים פותחים פתוחים בסוף.
מגבלות: 1 ≤ s.length ≤ 10^4.
פונקציה
- arg1string
- מחזירהboolean
דוגמאות
- קלט
- arg1 = "[]{}()"
- פלט
- true
- קלט
- arg1 = "{[()()]}"
- פלט
- true
- קלט
- arg1 = "{(})"
- פלט
- false
+13 בדיקות נסתרות בשליחה
רמזים
פתחו אותם אחד אחד. כל רמז חושף קצת יותר.
קראו את המחרוזת משמאל לימין. כשמגיע סוגר סוגר, איזה סוגר פותח מותר לו לסגור?
הוא יכול לסגור רק את הסוגר הפותח שנפתח לאחרונה ועדיין פתוח. האחרון שנפתח, הראשון שנסגר: זה בדיוק הסדר שמחסנית שומרת.
דחפו כל סוגר פותח למחסנית. כשמגיעים לסוגר סוגר, המחסנית חייבת להיות לא ריקה, והסוגר שבראשה חייב להיות מאותו סוג; הוציאו אותו והמשיכו. כשהמחרוזת מסתיימת, היא מאוזנת רק אם המחסנית ריקה.
הסבר מלא לבעיה הזאת יגיע בקרוב.
בעיות דומות
בעיות שמשתמשות באותם רעיונות. פתרון של שתיים או שלוש מהן מקבע את הדפוס.
Python
def isValid(s):
# כתבו כאן קודמקרה 1
מקרה 2
מקרה 3
קלט
arg1 = "[]{}()"צפוי
true