Подсчитать слова, которые начинаются на введённый символ с помощью 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();
}
}
}