Найти индекс вхождения
Дана задача: дается две строки needle и haystack, верните индекс первого появления иглы в стоге сена или -1, если игла не является частью стога сена.
Моя идея:
Топаем по строке пока не встретим первое вхождение, как нашли запоминаем индекс и начинаем считать сколько раз совпадают символы и если число совпадений равно длине "иглы" тогда выходим и возвращаем индекс
Код:
private static int indexOfFirstOccurence(string haystack, string needle)
{
int shift = 1;
int index = 0;
for (int i = 0, j = 0; i < haystack.Length; i += shift)
{
int matchCount = 0;
if (haystack[i] == needle[j])
{
index = i;
shift = i;
while (haystack[shift] == needle[j] && j < needle.Length)
{
/* вижу что ещё i надо увеличивать чтобы шагать дальше по строке
*/
matchCount++;
j++;
shift++;
if (matchCount == needle.Length)
{
return index;
}
}
}
}
return -1;
}
помогите сделать так чтобы работало, в своей реализации кучу "приколов" нашёл когда пытался организовать смещение i на расстояние которое уже просмотрел в строке