У меня есть строка вроде
string Text = "012345678901234567890123456789";
и a List<int>
с индексами
List<int> Indexes = new List<int>() { 2, 4, 7, 9, 15, 18, 23, 10, 1, 2, 15, 40 };
со следующими ограничениями
- в списке есть дубликаты
- список не отсортирован
- могут быть индексы >
Text.length
какой лучший способ удалить символы из текста, которые находятся в списке индексов?
ожидаемый вывод:
035681234679012456789
Существует ли более эффективный способ, чем
foreach (int index in Indexes
.OrderByDescending(x => x)
.Distinct()
.Where(x => x < Text.Length))
{
Text = Text.Remove(index, 1);
}
Обновление:
Ниже приведены контрольные значения текущих ответов (string
с 100 000 символов и List<int>
с длиной 10.000:
Gallant: 3.322 ticks
Tim Schmelter: 8.602.576 ticks
Sergei Zinovyev: 9.002 ticks
rbaghbanli: 7.137 ticks
Jirí Tesil Tesarík: 72.580 ticks