Menu
CoddyTech

Permutation in String

תמורה של מחרוזת משתמשת באותן אותיות בכל סדר שהוא, כל אחת מהן באותו מספר פעמים כמו במחרוזת המקורית: tar, rat ו-art הן תמורות זו של זו. נתונות לך שתי מחרוזות s1 ו-s2 המורכבות מאותיות אנגליות קטנות. החזר true אם תמורה כלשהי של s1 מופיעה ב-s2 כתת-מחרוזת (רצף של תווים עוקבים), ואחרת החזר false.

פונקציה

checkInclusion(s1: string, s2: string) → boolean
s1string
האותיות שיש לסדר מחדש
s2string
המחרוזת שבה יש לחפש
מחזירהboolean
נכון אם תת־מחרוזת של s2 היא סידור מחדש של s1

אילוצים

  • 1 ≤ s1.length ≤ 2 × 104
  • 1 ≤ s2.length ≤ 5 × 104
  • s1 ו-s2 מכילים רק אותיות קטנות באנגלית (a עד z).
  • s1 עשויה להיות ארוכה יותר מ־s2.

דוגמאות

קלט
s1 = "tar"s2 = "smartphone"
פלט
true
הסבר
תת־המחרוזת art באינדקסים 2 עד 4 של smartphone מכילה a אחד, r אחד ו־t אחד — אותן אותיות כמו ב־tar.

lock icon+17 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

האם אפשר להחזיר כל אינדקס שבו מתחילה תמורה של s1 בתוך s2, עדיין בזמן O(m + n)?

איפוס הקוד
def checkInclusion(s1, s2):
    # כתבו כאן קוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

s1 = "tar"
s2 = "smartphone"

צפוי

true