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.
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

Test #1

Test #2

Test #3

Argumenty

haystack = "bananarama"
needle = "ana"

Oczekiwany wynik

1