פלינדרום (Palindrome) הוא מילה, מספר, משפט או כל רצף סמלים אחר שקריאתו מימין לשמאל ומשמאל לימין היא זהה.
לדוגמה, מחרוזות התווים "aba", "1221" הן פלינדרום.
בהינתן מערך של מספרים שלמים nums, נגדיר רצף כמעט-פלינדרומי (Almost Palindrome) הוא רצף מספרים כך שאם נשמיט ממנו ערך אחד לכל היותר (בתוך הרצף ולא בקצה) נקבל רצף פלינדרומי.
יש להחזיר את אורכו של הרצף הכמעט-פלינדרומי הגדול ביותר.
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
arr = [1, 1, 4, 10, 10, 4, 3, 10, 10]
6
הסבר: הרצף הכמעט-פלינדרומי הגדול ביותר הוא בין האינדקסים 3 ל-8, ואורכו הוא 6.
arr = [1, 2, 3, 4]
1
הסבר: השיטה תחזיר 1.
arr = [1, 2, 3, 2, 1]
5
הסבר: המערך כבר פלינדרום מלא בגודל 5, לכן החזרנו 5.
arr = [1, 2, 3, 3, 2, 1]
6
הסבר: המערך כבר פלינדרום מלא בגודל 6, לכן החזרנו 6.
arr = [1, 2, 3, 4, 2, 1]
6
הסבר: המערך כולו הוא כמעט-פלינדרום, אם נשמיט את הערך 4 או 3 נקבל פלינדרום בגודל 5, אך המערך המקורי בגודל 6 הוא כמעט-פלינדרום ולכן מחזירים 6.
arr = [5, 8, 9, 8, 9, 5]
6
הסבר: המערך כולו הוא כמעט-פלינדרום, אם נשמיט את אחד הערכים 9 נקבל פלינדרום בגודל 5, אך המערך המקורי בגודל 6 הוא כמעט-פלינדרום ולכן מחזירים 6.
arr = [7, 1, 2, 3, 4, 5, 6, 7]
1
הסבר: אין כאן רצף כמעט-פלינדרום ארוך, רק אלמנטים בודדים שהם פלינדרומים טריוויאליים בגודל 1.
arr = [10, 10, 15, 20, 15, 10, 10]
7
הסבר: המערך כולו הוא כמעט-פלינדרום, אם נשמיט את הערך 20 באמצע נקבל פלינדרום בגודל 6, אך המערך המקורי בגודל 7 הוא כמעט-פלינדרום ולכן מחזירים 7.
קלט:
arr = [1, 1, 4, 10, 10, 4, 3, 10, 10]
הפלט המבוקש:
6