Menu
CoddyTech

Minimum Window Substring

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

אם יש כמה תת-מחרוזות קצרות ביותר, החזר את השמאלית ביותר. אם אף אחת מהן אינה מכילה את כל התווים של t, החזר מחרוזת ריקה.

פונקציה

minWindow(s: string, t: string) → string
sstring
המחרוזת שבה יש לחפש
tstring
התווים שהחלון חייב להכיל, כולל חזרות
מחזירהstring
תת־המחרוזת הקצרה ביותר, ואם יש כמה כזו אז השמאלית ביותר, של s שמכילה את כל t, או מחרוזת ריקה

אילוצים

  • 1 ≤ s.length ≤ 5 × 104
  • 1 ≤ t.length ≤ 104
  • s ו-t מכילות רק אותיות באנגלית. אותיות גדולות ואותיות קטנות הן תווים שונים.
  • כאשר יש כמה תתי־מחרוזות שהן הקצרות ביותר, התשובה היא זו השמאלית ביותר; כאשר אין כזו, התשובה היא "".

דוגמאות

קלט
s = "mappingtheplan"t = "nap"
פלט
"plan"
הסבר
החלון הראשון משמאל שמכיל n,‏ a ו־p הוא appin, באורך חמישה תווים. plan מכילה את שלושתם בארבעה תווים, ואף רצף של שלושה תווים אינו מכיל את שלושתם.
challenge icon

שאלת המשך

כש־t מכילה מעט אותיות ו־s ארוכה, לרוב s אין שום חשיבות. האם תוכל לגרום לחלון לקפוץ רק בין מיקומים שמכילים אות של t?

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנטים

s = "mappingtheplan"
t = "nap"

הפלט הצפוי

"plan"