Найти разность множеств с повторениями - C#
Формулировка задачи:
Всем привет! Есть задача нахождения разности двух больших множеств, хочется чтобы код максимально быстро работал. У меня быстрее O(m*n)+ не получается. Пробовал использовать Except, работает быстро, но выводит неповторяющиеся элементы, мне такого не надо) Пока что код такой:
Буду признателен за оптимизацию)
List<string> TempList = new List<string>();
for (int i = 0; i < WordsAll.Count(); i++)
{
int flag = 0;
for (int j = 0; j < StopWords.Count(); j++)
{
if (!(WordsAll[i].ToLower() == StopWords[j].ToLower()))
{
flag++;
}
}
if(flag == StopWords.Count())
TempList.Add(WordsAll[i]);
}
WordsAll = TempList;Решение задачи: «Найти разность множеств с повторениями»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication186
{
class Program
{
static void Main(string[] args)
{
var list = new List<string>() { "aa", "bb", "cc", "aa", "cc" };
var black = new HashSet<string>() { "bb", "cc", "dd" };
var result = list.Where(word => !black.Contains(word));
Console.WriteLine(string.Join(" ", result.ToArray()));
Console.ReadLine();
}
}
}