using System.Collections.Generic;
using System.Diagnostics;
private static string Text => @"Товарищи! консультация с широким активом позволяет оценить значение направлений прогрессивного развития. Задача организации, в особенности же реализация намеченных плановых заданий обеспечивает широкому кругу (специалистов) участие в формировании позиций, занимаемых участниками в отношении поставленных задач. Значимость этих проблем настолько очевидна, что постоянный количественный рост и сфера нашей активности позволяет оценить значение систем массового участия. Не следует, однако забывать, что консультация с широким активом представляет собой интересный эксперимент проверки направлений прогрессивного развития. Таким образом постоянный количественный рост и сфера нашей активности требуют определения и уточнения направлений прогрессивного развития.
Разнообразный и богатый опыт консультация с широким активом в значительной степени обуславливает создание форм развития.Товарищи! консультация с широким активом играет важную роль в формировании систем массового участия.
Разнообразный и богатый опыт постоянное информационно-пропагандистское обеспечение нашей деятельности способствует подготовки и реализации соответствующий условий активизации.Значимость этих проблем настолько очевидна, что рамки и место обучения кадров требуют определения и уточнения систем массового участия.Задача организации, в особенности же реализация намеченных плановых заданий требуют от нас анализа направлений прогрессивного развития. Идейные соображения высшего порядка, а также рамки и место обучения кадров требуют от нас анализа дальнейших направлений развития.
Товарищи! укрепление и развитие структуры позволяет оценить значение позиций, занимаемых участниками в отношении поставленных задач. Не следует, однако забывать, что постоянный количественный рост и сфера нашей активности влечет за собой процесс внедрения и модернизации направлений прогрессивного развития.
Повседневная практика показывает, что рамки и место обучения кадров в значительной степени обуславливает создание позиций, занимаемых участниками в отношении поставленных задач. Задача организации, в особенности же начало повседневной работы по формированию позиции играет важную роль в формировании форм развития. Идейные соображения высшего порядка, а также консультация с широким активом позволяет оценить значение направлений прогрессивного развития.
С другой стороны укрепление и развитие структуры позволяет выполнять важные задания по разработке модели развития.Разнообразный и богатый опыт укрепление и развитие структуры требуют от нас анализа систем массового участия.
Товарищи! консультация с широким активом в значительной степени обуславливает создание дальнейших направлений развития. Товарищи! новая модель организационной деятельности влечет за собой процесс внедрения и модернизации позиций, занимаемых участниками в отношении поставленных задач. Товарищи! постоянный количественный рост и сфера нашей активности способствует подготовки и реализации существенных финансовых и административных условий. Идейные соображения высшего порядка, а также новая модель организационной деятельности требуют от нас анализа направлений прогрессивного развития.Таким образом укрепление и развитие структуры обеспечивает широкому кругу (специалистов) участие в формировании позиций, занимаемых участниками в отношении поставленных задач.Идейные соображения высшего порядка, а также начало повседневной работы по формированию позиции позволяет выполнять важные задания по разработке направлений прогрессивного развития.
Не следует, однако забывать, что новая модель организационной деятельности требуют определения и уточнения позиций, занимаемых участниками в отношении поставленных задач. Равным образом постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание существенных финансовых и административных условий.Значимость этих проблем настолько очевидна, что консультация с широким активом требуют от нас анализа соответствующий условий активизации. Разнообразный и богатый опыт укрепление и развитие структуры требуют от нас анализа форм развития.
Таким образом рамки и место обучения кадров играет важную роль в формировании существенных финансовых и административных условий.Равным образом новая модель организационной деятельности позволяет выполнять важные задания по разработке форм развития. Таким образом консультация с широким активом позволяет оценить значение модели развития.Товарищи! сложившаяся структура организации влечет за собой процесс внедрения и модернизации форм развития. Не следует, однако забывать, что новая модель организационной деятельности влечет за собой процесс внедрения и модернизации соответствующий условий активизации.Повседневная практика показывает, что укрепление и развитие структуры играет важную роль в формировании существенных финансовых и административных условий.
Равным образом дальнейшее развитие различных форм деятельности позволяет выполнять важные задания по разработке форм развития.Значимость этих проблем настолько очевидна, что постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание форм развития.Равным образом начало повседневной работы по формированию позиции позволяет выполнять важные задания по разработке новых предложений. С другой стороны консультация с широким активом позволяет оценить значение новых предложений. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет выполнять важные задания по разработке направлений прогрессивного развития.
Значимость этих проблем настолько очевидна, что сложившаяся структура организации позволяет оценить значение форм развития.Таким образом сложившаяся структура организации играет важную роль в формировании системы обучения кадров, соответствует насущным потребностям.Идейные соображения высшего порядка, а также постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа новых предложений. Значимость этих проблем настолько очевидна, что дальнейшее развитие различных форм деятельности играет важную роль в формировании дальнейших направлений развития. Идейные соображения высшего порядка, а также новая модель организационной деятельности требуют от нас анализа форм развития. Разнообразный и богатый опыт рамки и место обучения кадров способствует подготовки и реализации форм развития.
Разнообразный и богатый опыт рамки и место обучения кадров влечет за собой процесс внедрения и модернизации модели развития. Товарищи! сложившаяся структура организации влечет за собой процесс внедрения и модернизации позиций, занимаемых участниками в отношении поставленных задач. Товарищи! рамки и место обучения кадров требуют от нас анализа соответствующий условий активизации. Разнообразный и богатый опыт консультация с широким активом способствует подготовки и реализации форм развития.
Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения существенных финансовых и административных условий.Таким образом рамки и место обучения кадров позволяет оценить значение направлений прогрессивного развития.Равным образом дальнейшее развитие различных форм деятельности позволяет оценить значение систем массового участия.Равным образом начало повседневной работы по формированию позиции требуют от нас анализа модели развития. Задача организации, в особенности же постоянный количественный рост и сфера нашей активности позволяет выполнять важные задания по разработке дальнейших направлений развития.Повседневная практика показывает, что укрепление и развитие структуры позволяет оценить значение позиций, занимаемых участниками в отношении поставленных задач.
Не следует, однако забывать, что постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет оценить значение позиций, занимаемых участниками в отношении поставленных задач. Повседневная практика показывает, что постоянный количественный рост и сфера нашей активности способствует подготовки и реализации форм развития. Разнообразный и богатый опыт рамки и место обучения кадров позволяет выполнять важные задания по разработке позиций, занимаемых участниками в отношении поставленных задач. Задача организации, в особенности же укрепление и развитие структуры играет важную роль в формировании позиций, занимаемых участниками в отношении поставленных задач. Значимость этих проблем настолько очевидна, что начало повседневной работы по формированию позиции представляет собой интересный эксперимент проверки соответствующий условий активизации.Разнообразный и богатый опыт постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание существенных финансовых и административных условий.
Повседневная практика показывает, что рамки и место обучения кадров в значительной степени обуславливает создание направлений прогрессивного развития. Разнообразный и богатый опыт постоянный количественный рост и сфера нашей активности играет важную роль в формировании новых предложений.
Задача организации, в особенности же начало повседневной работы по формированию позиции требуют определения и уточнения новых предложений.Равным образом сложившаяся структура организации представляет собой интересный эксперимент проверки дальнейших направлений развития.Значимость этих проблем настолько очевидна, что рамки и место обучения кадров позволяет оценить значение системы обучения кадров, соответствует насущным потребностям.Таким образом начало повседневной работы по формированию позиции требуют от нас анализа новых предложений. Не следует, однако забывать, что рамки и место обучения кадров позволяет оценить значение направлений прогрессивного развития. Таким образом рамки и место обучения кадров играет важную роль в формировании существенных финансовых и административных условий.
Значимость этих проблем настолько очевидна, что сложившаяся структура организации обеспечивает широкому кругу (специалистов) участие в формировании систем массового участия.Разнообразный и богатый опыт укрепление и развитие структуры требуют определения и уточнения систем массового участия. Не следует, однако забывать, что сложившаяся структура организации представляет собой интересный эксперимент проверки соответствующий условий активизации. Не следует, однако забывать, что новая модель организационной деятельности обеспечивает широкому кругу (специалистов) участие в формировании позиций, занимаемых участниками в отношении поставленных задач.
Идейные соображения высшего порядка, а также рамки и место обучения кадров играет важную роль в формировании соответствующий условий активизации.Задача организации, в особенности же новая модель организационной деятельности в значительной степени обуславливает создание позиций, занимаемых участниками в отношении поставленных задач. Не следует, однако забывать, что новая модель организационной деятельности в значительной степени обуславливает создание существенных финансовых и административных условий.Задача организации, в особенности же новая модель организационной деятельности способствует подготовки и реализации модели развития.Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности способствует подготовки и реализации систем массового участия. Задача организации, в особенности же укрепление и развитие структуры позволяет выполнять важные задания по разработке форм развития.
Не следует, однако забывать, что сложившаяся структура организации позволяет выполнять важные задания по разработке направлений прогрессивного развития.Равным образом реализация намеченных плановых заданий играет важную роль в формировании систем массового участия. С другой стороны новая модель организационной деятельности представляет собой интересный эксперимент проверки позиций, занимаемых участниками в отношении поставленных задач. Разнообразный и богатый опыт начало повседневной работы по формированию позиции представляет собой интересный эксперимент проверки системы обучения кадров, соответствует насущным потребностям.Повседневная практика показывает, что укрепление и развитие структуры позволяет оценить значение соответствующий условий активизации.
Идейные соображения высшего порядка, а также рамки и место обучения кадров играет важную роль в формировании форм развития. С другой стороны реализация намеченных плановых заданий требуют от нас анализа дальнейших направлений развития. Значимость этих проблем настолько очевидна, что реализация намеченных плановых заданий позволяет оценить значение систем массового участия.";
public static void Main(string[] args)
TestAlgorithm(LinqAlgorithm, "LINQ");
TestAlgorithm(SingleLoopAlgorithm, "В один цикл");
private static void TestAlgorithm(Func<string, Tuple<string, int>> algorithm, string title)
Console.WriteLine($"----------Алгоритм \"{title}\"-------------");
var watch = Stopwatch.StartNew();
var result = algorithm(Text.ToLower());
Console.WriteLine($"Результаты:\nСлово: {result.Item1}\nКоличество повторений: {result.Item2}");
Console.WriteLine($"Выполнено за {watch.ElapsedMilliseconds} мс");
private static Tuple<string, int> LinqAlgorithm(string text)
var punctuation = text.Where(c => char.IsPunctuation(c) || char.IsDigit(c) || char.IsWhiteSpace(c) || char.IsSeparator(c)).Distinct().ToArray();
var result = text.Split(punctuation, StringSplitOptions.RemoveEmptyEntries).GroupBy(w => w).OrderByDescending(v => v.Count()).FirstOrDefault();
return result == null ? new Tuple<string, int>(null, 0) : new Tuple<string, int>(result.Key, result.Count());
private static Tuple<string, int> SingleLoopAlgorithm(string text)
var punctuation = text.Where(c => char.IsPunctuation(c) || char.IsDigit(c) || char.IsWhiteSpace(c) || char.IsSeparator(c)).Distinct().ToArray();
var wordsDictionary = new Dictionary<string, int>();
var wordsArray = new List<string>[]{};
if (punctuation.Contains(ch) && !string.IsNullOrWhiteSpace(currentWord))
currentWord = currentWord.Trim();
wordsDictionary[currentWord] = wordsDictionary.ContainsKey(currentWord) ? wordsDictionary[currentWord] + 1 : 1;
var repetitions = wordsDictionary[currentWord];
if (wordsArray.Length <= repetitions)
Array.Resize(ref wordsArray, repetitions + 1);
if (wordsArray[repetitions] == null)
wordsArray[repetitions] = new List<string>();
wordsArray[repetitions].Add(currentWord);
return wordsArray.Last() != null ? new Tuple<string, int>(wordsArray.Last().First(), wordsArray.Length - 1) : new Tuple<string, int>(null, 0);