Подсчитать слова, которые начинаются на введённый символ с помощью Dictionary - C#

Узнай цену своей работы

Формулировка задачи:

Используя класс Dictionary, посчитать к-во слов, которые начинаются на введённый пользователем символ (букву) и отобразить буквы, встречаемые в начале слов данной строки меньше остальных

Решение задачи: «Подсчитать слова, которые начинаются на введённый символ с помощью Dictionary»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace CyberForum
{
 
    class Program
    {
        static void Main(string[] args)
        {
            string testStr =
                "Используя класс Dictionary, посчитать к-во слов, которые начинаются на введённый пользователем символ (букву) и отобразить буквы, встречаемые в начале слов данной строки меньше остальных";
            Dictionary<char, List<string>> resultDictionary=new Dictionary<char, List<string>>();
            char key;
            int minCount;
 
            //разбиваем строку на слова и загоняем все в Dictionary по первой букве
            foreach (var word in testStr.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries))
            {
                key = word.ToCharArray()[0];
                if (!resultDictionary.ContainsKey(key))
                    resultDictionary.Add(key, new List<string>());
                resultDictionary[key].Add(word);   
            }                
            
            Console.WriteLine("Исходная строка: " + testStr);
            Console.Write("Введите символ: ");
            ConsoleKeyInfo ch = Console.ReadKey();
            Console.WriteLine("\nКоличество слов, начинающихся на букву \'{0}\': {1}", ch.KeyChar, resultDictionary.ContainsKey(ch.KeyChar)?resultDictionary[ch.KeyChar].Count():0);            
            //находим минимальное количество слов по ключу
            minCount = resultDictionary.Min(pair => pair.Value.Count());
            Console.Write("Буквы, встречаемые в начале слов данной строки меньше остальных ({0} раз): ", minCount);
            foreach (KeyValuePair<char, List<string>> keyValuePair in resultDictionary)
            {
                if (minCount == keyValuePair.Value.Count())
                    Console.Write("{0}, ", keyValuePair.Key);
            }            
            Console.ReadKey();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы