@roflanPominki

Задача в том, что мне нужно из строки убирать символы по индексу из массива.Задача с codewars(Last Survivor)?

Все проверки прошел, но когда проверка идет с огромной строкой и огромным массивом появляется ошибка
System.IndexOutOfRangeException: Index was outside the bounds of the array
. Сразу скажу, знаю про то что это ошибка появляется когда я пытаюсь обратиться к индексу которого нет в массиве. Но не могу понять почему в моем случае это происходит. P.S. в этой задаче на проверку даются всегда массивы с числами длиной на 1 меньше чем строки!
public static string LastSurvivor(string letters, int[] coords)
        {
            for (int i = 0; i < coords.Length; i++)
            {
                if (coords[i] > letters.Length) i++;
                letters = letters.Replace(letters[coords[i]].ToString(), "");
            }
            return letters; 
        }
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Ты неправильно решаешь задачу.
Более корректным вариантом будет создать StringBuilder и напизать в него все буквы, которые лежат на индексах, которые отсутствуют в массиве coords.

Ао понять, почему у тебя выход за пределы происходит ты можешь сам - просто попробуй по шагам выполнить эту функцию с такими параметрами:

LastSurvivor ("123", new [] {3});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы