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
פלט
["((()))", "(()())", "(())()", "()(())", "()()()"]
הסבר
אפשר לסדר שלושה זוגות בחמש דרכים תקינות. ((())) פותח את שלושתם לפני שסוגרים אחד מהם, ומכיוון ש-( מופיע ראשון בסדר המיון, הוא מוביל את הרשימה; ()()() סוגר כל זוג מיד, ומופיע אחרון.

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

challenge icon

שאלת המשך

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

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

מקרה 1

מקרה 2

קלט

n = 3

צפוי

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