נגדיר: מחרוזת תווים s מכילה מחרוזת t אם כל התווים של t נמצאים במחרוזת s באותו סדר בו הם נמצאים ב-t (אבל יכולים להיות תווים נוספים ביניהם).
בהינתן מחרוזת str1 ומחרוזת str2 יש להחזיר את המחרוזת הקטנה ביותר המכילה את שתי המחרוזות.
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
str1 = "A", str2 = "B"
AB
הסבר: המחרוזת הכי קטנה שמכילה את שתי המחרוזות היא "AB" או "BA".
str1 = "AA", str2 = "A"
AA
הסבר: המחרוזת הכי קטנה שמכילה את שתי המחרוזות היא "AA".
str1 = "AGGTAB", str2 = "GXTXAYB"
AGXGTXAYB
הסבר: המחרוזת הכי קטנה שמכילה את שתי המחרוזות היא "AGXGTXAYB".
str1 = "1A2B3C4D5E", str2 = "A1B2C3D4E5"
A1BA2CB3DC4ED5E
הסבר: המחרוזת הכי קטנה שמכילה את שתי המחרוזות היא "A1BA2CB3DC4ED5E".
str1 = "ABC", str2 = "ACB"
ACBC
הסבר: המחרוזת הכי קטנה שמכילה את שתי המחרוזות היא "ACBC".
str1 = "XYZ", str2 = ""
XYZ
הסבר: מחרוזת ריקה מוכלת בכל מחרוזת, לכן str1 עצמה היא המחרוזת הקטנה ביותר.
str1 = "HELLO", str2 = "WORLD"
WORHELDLO
הסבר: המחרוזת הכי קטנה שמכילה את שתי המחרוזות היא "WORHELDLO".
str1 = "ABC", str2 = "XYZ"
ABCXYZ
הסבר: המחרוזת הכי קטנה שמכילה את שתי המחרוזות היא "ABCXYZ", שמהווה שילוב של שתי המחרוזות המקוריות.
קלט:
str1 = "A", str2 = "B"
הפלט המבוקש:
AB