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());
        }
Exemplo n.º 3
0
    public void Test(string word, string expected)
    {
        var representOrderdString = IRepresentOrderdString.FromString(word);

        Assert.AreEqual(expected, representOrderdString.ToString());
    }