Может ли кто-нибудь помочь мне понять, почему это решение для лит-кода не принимается во всех случаях?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Может ли кто-нибудь помочь мне понять, почему это решение для лит-кода не принимается во всех случаях?

Сообщение Anonymous »

Я только учусь программированию и решаю задачи, которые должны быть простыми, но в данном случае я не понимаю, почему этот код не работает? Я помещаю его в код VS, и он возвращает то, что я считаю правильным ответом (то есть «индекс начала подстроки»), но мой код терпит неудачу в 15-м тесте, в котором используется «миссисипи» по сравнению с «иссип» . На самом деле я не знаю, в чем проблема, потому что она нормально компилируется, когда я ввожу их в качестве входных данных в код VS.
Вот формулировка проблемы/ссылка:
  • Найдите индекс первого вхождения в строку
Давны две строки: игла и haystack, возвращает индекс первого вхождения иглы в стоге сена или -1, если иголка не является частью сена.
Пример 1:
Ввод: haystack = "sadbutsad", Needle = "sad"
Вывод: 0
Объяснение: слово "sad" встречается в индексах 0 и 6.
Первое вхождение находится в индексе 0, поэтому мы возвращает 0.
Пример 2:
Ввод: haystack = "leetcode", Needle = "leeto"
Вывод: -1Объяснение: «leeto» не встречается в «leetcode», поэтому мы возвращаем -1.
МОЙ КОД
`

Код: Выделить всё

public int StrStr(string haystack, string needle)
{
if (needle == haystack)
{
return 0;
}
if (needle.Count() > haystack.Count())
{
return -1;
}

int currentIndex = 0;
int i = 0;
int target = needle.Count();
int seeIfAtTarget = 0;
string tempString = needle;

//goes through the main word
foreach (char letterInMainWord in haystack)
{   //if the letter is the same as the first letter of the comparison
if (letterInMainWord == needle[0])
{
currentIndex = i;
//loops through the letters in the compared word
foreach (char letter in tempString)
{   //adds one to seeIfAtTarget, and we will check to see if that meets the target
if (letter == haystack[currentIndex])
{
seeIfAtTarget++;
currentIndex++;
}
else
{
seeIfAtTarget = 0;
break;
}
if (seeIfAtTarget == target)
{
return i;
}
}
}
i++;
}
return -1;
}
`
Я пробовал использовать отладку по точкам останова и списки наблюдения в VS, а также пробовал использовать AI

Подробнее здесь: https://stackoverflow.com/questions/785 ... ted-for-al
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»