Menu
CoddyTech

Find the First Occurrence in a String

מקבלים שתי מחרוזות, haystack ו-needle. החזירו את האינדקס ב-haystack שבו מתחיל המופע הראשון של needle, בספירה מ-0. אם needle אף פעם לא מופיעה ב-haystack, החזירו -1. כתבו בעצמכם את החיפוש במקום לקרוא לפונקציית חיפוש מובנית של תת-מחרוזת, כגון find או indexOf.

פונקציה

strStr(haystack: string, needle: string) → integer
haystackstring
הטקסט לחיפוש
needlestring
המחרוזת שיש לחפש
מחזירהinteger
האינדקס שבו מתחיל העותק הראשון של needle, או ‎-1‎ אם אין כזה

אילוצים

  • 1 ≤ haystack.length ≤ 5 × 104
  • 1 ≤ needle.length ≤ 5 × 104
  • שתי המחרוזות מכילות אותיות אנגליות קטנות בלבד.
  • needle עשויה להיות ארוכה יותר מ-haystack. במקרה כזה היא לא יכולה להופיע, והתשובה היא -1.

דוגמאות

קלט
haystack = "bananarama"needle = "ana"
פלט
1
הסבר
האותיות באינדקסים 1, 2 ו־3 מרכיבות את ana. עותק שני מתחיל באינדקס 3 וחופף לראשון, אבל התשובה היא העותק הראשון, ולכן היא 1.

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

challenge icon

שאלת המשך

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

איפוס הקוד
def strStr(haystack, needle):
    # כתבו כאן את הקוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

haystack = "bananarama"
needle = "ana"

צפוי

1