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