В этой задаче LeetCode нас попросили написать функцию, аналогичную StrStr в C++. Напомним, что StrStr — это функция, которая принимает две строки; строка A (стог сена) и строка B (игла), и возвращает, можно ли (и где) найти строку B в строке A (иголку в стоге сена).

Другими словами, если указать стог сена hello и иголку lo , StrStr вернет 3, так как именно здесь в стоге сена появляется иголка. Согласно спецификации LeetCode, если мы не можем найти иголку в стоге сена, мы должны вернуть -1, а если иголка пуста, мы должны вернуть 0.

Очевидно, что в JavaScript есть множество функций для достижения этой цели, но это не совсем в духе LeetCode, поэтому давайте рассмотрим решение.

Решение 1. Цикл

Это решение перебирает стог сена, пока не найдет начало иглы, а затем проверяет, совпадают ли буквы, следующие в стоге сена, с буквами иглы. Если обнаруживается полное совпадение, то возвращается эта позиция, в противном случае обход стога сена продолжается. Если мы доходим до конца стога, не найдя иголки (или, точнее, если мы заходим в стог достаточно далеко, чтобы иголку невозможно найти), мы возвращаем -1.