Menu
CoddyTech

Palindrome Partitioning

פלינדרום נקרא באותה צורה משמאל לימין ומימין לשמאל. חלקו את המחרוזת s לחלק אחד או יותר, כך שכל חלק יהיה פלינדרום, והחזירו את כל הדרכים לעשות זאת.

כתבו כל חלוקה כך שחלקיה מופיעים לפי הסדר ומופרדים ב־|: חלוקת aab לחלקים a, a ו־b נותנת a|a|b. החזירו את החלוקות ממוינות בסדר עולה לפי קודי התווים, כך ש־| מופיע אחרי כל אות קטנה.

פונקציה

partition(s: string) → string-array
sstring
מחרוזת האותיות הקטנות שיש לחתוך
מחזירהstring-array
כל חלוקה של s לפלינדרומים, כשהחלקים מופרדים באמצעות |, בסדר עולה

אילוצים

  • 1 ≤ s.length ≤ 11
  • s מכילה רק אותיות קטנות באנגלית.
  • למחרוזת של 11 אותיות זהות יש 1,024 חלוקות, התשובה הגדולה ביותר.

דוגמאות

קלט
s = "aab"
פלט
["aa|b", "a|a|b"]
הסבר
רק ל־aa|b ול־a|a|b יש חלקים שכולם פלינדרומים; a|ab נכשל ב־ab. aa|b מופיע ראשון במיון: בתו השני יש בו a, בעוד שבשני יש |, שמופיע אחרי כל אות במיון.
challenge icon

שאלת המשך

האם תוכל למצוא את מספר החיתוכים הקטן ביותר שמחלק את s לפלינדרומים, עבור מחרוזות באורך של עד 2,000?

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

בדיקה #1

בדיקה #2

ארגומנט

s = "aab"

הפלט הצפוי

["aa|b", "a|a|b"]