Menu
CoddyTech

Generate Parentheses

מחרוזת של סוגריים נחשבת תקינה אם, כשקוראים אותה משמאל לימין, מספר התווים ) לעולם אינו עולה על מספר התווים (, ושני המספרים שווים בסוף. לכן (())() תקינה, ואילו ())( אינה תקינה: התו השלישי שלה סוגר זוג שלא נפתח מעולם.

בהינתן מספר שלם n, יש להחזיר את כל המחרוזות התקינות שמכילות n סוגריים פותחים ו-n סוגריים סוגרים, ממוינות בסדר לקסיקוגרפי, שבו ( מופיע לפני ).

פונקציה

generateParenthesis(n: integer) → string-array
ninteger
מספר זוגות הסוגריים
מחזירהstring-array
כל מחרוזת תקינה של n זוגות, בסדר לקסיקוגרפי

אילוצים

  • 1 ≤ n ≤ 8
  • עבור n = 8, התשובה מכילה 1,430 מחרוזות.

דוגמאות

קלט
n = 3
פלט
["((()))", "(()())", "(())()", "()(())", "()()()"]
הסבר
שלושה זוגות יוצרים חמש מחרוזות תקינות. ((())) פותחת את שלושתם תחילה, ולכן היא ממוינת ראשונה; ()()() סוגרת כל זוג מיד, ומגיעה אחרונה.
challenge icon

שאלת המשך

האם אפשר לספור את המחרוזות התקינות עבור n זוגות בלי ליצור אותן?

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

בדיקה #1

בדיקה #2

ארגומנט

n = 3

הפלט הצפוי

["((()))", "(()())", "(())()", "()(())", "()()()"]