Задать вопрос
@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; 
        }
  • Вопрос задан
  • 93 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
Ты неправильно решаешь задачу.
Более корректным вариантом будет создать StringBuilder и напизать в него все буквы, которые лежат на индексах, которые отсутствуют в массиве coords.

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

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

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

Похожие вопросы