Удаление строк с дубликатами букв

222
13 апреля 2018, 14:37

Пожалуйста подскажите, к примеру есть массив из 4 строк

  • ABCD
  • ABCA
  • ACCD
  • ADCE

И нужно удалить строки, циклом в которых найдены повторяющиеся символы, то есть нужно удалить строки под номерами 2 и 3.

Как можно это сделать?

Answer 1

Задача распадается на две части, ключевая - понять, что строка имеет дубликаты букв.

Решать можно по-разному, вот лишь один вариант:

void Main()
{
    var data = new [] {"ABCD", "ABCA", "ACCD", "ADCE"};
    var result = data.Where(x => !HasDups(x)).ToArray();
}
// Define other methods and classes here
public bool HasDups(string sourse)
{
    return sourse.Length != sourse.Distinct().Count();
}

Во-первых, я не удаляю строки - а отбираю в результирующий IEnumerable, во-вторых, я определяю дубликат простым способом: длина строки совпадает с длиной Distinct.

Также на большом so можно поискать вариации определения наличия дубликатов в строке без linq, вот например очень быстрая (за O(n) в худшем случае) и простая реализация на HashSet'ах:

public bool HasDups(string sourse)
{
    var set = new HashSet<char>();
    foreach (var c in sourse)
    {
        if (!set.Add(c))
            return false;
    }
    return true;
}
READ ALSO
Сравнение значений

Сравнение значений

Есть множество значений которые изменяются со временемЕсли значение достигает определенного критического значения (у каждого оно свое),...

226
C# Разрезать текстовый файл по разделителям и сохранить в множество файлов

C# Разрезать текстовый файл по разделителям и сохранить в множество файлов

Вопрос: Есть 1 текстовый файл, в котором указаны пути файловВ списке нет разделителей типа ; или каких либо других

229
Не понятно, как работать с JSON на C# [дубликат]

Не понятно, как работать с JSON на C# [дубликат]

На данный вопрос уже ответили:

219
Сохранить файл в другую директорию

Сохранить файл в другую директорию

У меня есть директория (допустим string pathFile = P:\Database\new) , в которую нужно копировать файл, выбранный пользователемНачал писать:

244