Menu
CoddyTech

Find the First Occurrence in a String

Otrzymujesz dwa ciągi znaków: haystack i needle. Zwróć indeks w haystack, od którego zaczyna się pierwsze wystąpienie needle, licząc od 0. Jeśli needle nigdy nie występuje w haystack, zwróć -1. Napisz algorytm wyszukiwania samodzielnie, zamiast wywoływać wbudowaną funkcję wyszukiwania podciągu, taką jak find lub indexOf.

Funkcja

strStr(haystack: string, needle: string) → integer
haystackstring
tekst do wyszukania w
needlestring
ciąg znaków, którego należy szukać
Zwracainteger
indeks, pod którym zaczyna się pierwsze wystąpienie wartości needle, lub -1, jeśli jej nie ma

Ograniczenia

  • 1 ≤ haystack.length ≤ 5 × 104
  • 1 ≤ needle.length ≤ 5 × 104
  • Oba ciągi zawierają wyłącznie małe litery alfabetu angielskiego.
  • needle może być dłuższe niż haystack. Wtedy nie może się pojawić, a odpowiedzią jest -1.

Przykłady

Wejście
haystack = "bananarama"needle = "ana"
Wyjście
1
Wyjaśnienie
Litery o indeksach 1, 2 i 3 tworzą wyraz ana. Druga kopia zaczyna się na indeksie 3 i nakłada się na pierwszą, ale odpowiedzią jest pierwsza kopia, więc wynik to 1.

lock icon+16 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Czy możesz zwrócić każdy indeks, pod którym zaczyna się needle, uwzględniając także nakładające się wystąpienia, nadal w czasie O(n + m)?

Zresetuj kod
def strStr(haystack, needle):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

haystack = "bananarama"
needle = "ana"

Oczekiwane

1