13 בנובמבר 2022

שאלת ראיון [קל] - מציאת פלינדרום

בשאלה זו נתבקש למצוא האם סטרינג שהתקבל הוא פלינדרום או לא. פלינדרום מוגדר כמילה או סטרינג שניתן לקרוא אותה מההתחלה לסוף או מהסוף לההתחלה, למשל - אבא, אמא, סוס, דוד או באנגלית level, rotor, kayak...

LeetCode

דרישות:

  • יעילות זמן: n
  • יעילות מקום: 1

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

שאלה זו נחשבת לקלה במיוחד ומפתחים משופשפים נוטים לזלזל בה ולכתוב את הפתרון מיד בלי לחשוב.

עם זאת, כדאי לשים לב ולא ליפול בפח של מוקשים קלאסיים:
  • האם התווים החוקיים כוללים מספרים או לא
  • האם ישנם תווים נוספים שיש להתעלם מהם
  • האם הבדיקה רגישה לאותיות גדולות וקטנות
לגבי תווים חוקיים - ניתן לדרוש אך ורק את התווים של a-z ו A-Z או שבנוסף גם 0-9 כלולים.

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

לגבי רגישות לאותיות קטנות או גדולות - האם abA ייחשב פלינדרום או שרק aba ? אם כן, עליכם להתעלם מגודל האות בבדיקה של התו.

גרסאות אחרות לשאלה:
  • לבדוק מספר האם הוא פאלינדרום

אין תגובות:

הוסף רשומת תגובה