public string[] FindAllAnagrams(string[] words) { var anagrams = words .AsParallel() .GroupBy(w => IRepresentOrderdString.FromString(w)) .Where(g => g.Count() > 1) .Select(x => string.Join(" ", x)) .ToArray(); return(anagrams.ToArray()); }
public string[] FindAllAnagrams(string[] words) { var dic = new ConcurrentDictionary <IRepresentOrderdString, string>(); var parallelLoopResult = Parallel.ForEach(words, word => { var key = IRepresentOrderdString.FromString(word); dic.AddOrUpdate(key, word, (_, currentValue) => currentValue + " " + word); }); return(dic.Values.Where(x => x.Contains(" ")).ToArray()); }
public void Test(string word, string expected) { var representOrderdString = IRepresentOrderdString.FromString(word); Assert.AreEqual(expected, representOrderdString.ToString()); }