Найти самое длинное слово и определить, сколько раз оно встретилось в тексте - C#
Формулировка задачи:
Написать программу, которая считывает текст из файла, находит самое длинное
слово и определяет, сколько раз оно встретилось в тексте.
Буду признательна
Решение задачи: «Найти самое длинное слово и определить, сколько раз оно встретилось в тексте»
textual
Листинг программы
static void Main(string[] args)
{
Console.Write("Введите путь к файлу: ");
string path = Console.ReadLine(); //читаем путь к файлу с текстом
Stack<string> stack = new Stack<string>(); //стек, здесь буду лежать самые длинные слова
string line = File.ReadAllText(path, Encoding.Default); //читаем весь текст с файла
string[] words = line.Split(new string[] {" ", "\r\n", "\t"}, StringSplitOptions.RemoveEmptyEntries); //разбиваем строку на массив слов
int maxlength = 0; //здесь будет храниться длина самого длинного слова
for (int i = 0; i < words.Length; i++) //цикл, пробегает по массиву слов...
if (maxlength < words[i].Length) maxlength = words[i].Length; //если длина текущего слова больше запомненной - запоминаем новую длину
for (int i = 0; i < words.Length; i++) //цикл, выбирает из массива слов, слова максимальной длины
{
if (words[i].Length == maxlength && !stack.Contains(words[i])) stack.Push(words[i]); //если длина слова соответствует максимальной, и этого слова нет в стеке - убираем слово в стек
}
string[] maxwords = stack.ToArray(); //переводим стек в массив слов максимальной длины
int count; //здесь хранится число вхождений слова в строку
for (int i = 0; i < maxwords.Length; i++) //пробегаемся по массиву слов максимальной длины
{
count = 0; //обнуляем счетчик для каждого нового слова
foreach (string x in words) //перебираем исходный массив слов
{
if (x == maxwords[i]) ++count; //если выбранное слово, собвпадает с максимальным - наращиваем счетчик
}
Console.WriteLine("{2}. Самое длинное слово: {0}\n Число вхождений: {1}", maxwords[i], count, i); //выводим результаты
}
Console.ReadKey(true); //нажмите любую клавишу для продолжения
}