/// <summary> /// Get all characters and his count /// </summary> /// <param name="originalString">Input string value</param> /// <returns>Dictionary char word and count value</returns> // Сложный вариант реализации логики подсчёта символов (1.2, 1.5) (Вариант 2) public StringsLearnModel GetCharCount(string originalString) { // Инициализируем новый экземпляр класса модели StringsLearnModel slm = new StringsLearnModel(); // Конвертируем в массив символов var charArray = originalString.ToCharArray(); // Пробегаем циклом по всем элементам строки for (int i = 0; i < charArray.Length; i++) { // Если словарь == null или не содержит элемента с таким ключём и символ не пуст if (slm.CharacterDictionary == null || !slm.CharacterDictionary.ContainsKey(charArray[i]) && charArray[i] != ' ') { // Добавляем значемие в словарь slm.CharacterDictionary?.Add(charArray[i], 1); } // Иначе, если словарь содержит ключ else if (slm.CharacterDictionary.ContainsKey(charArray[i])) { // Добавляем 1 к значению ключа slm.CharacterDictionary[charArray[i]] += 1; } } // Возвращаем модель return(slm); }
static void Main(string[] args) { // Инициализируем модель данных и класс реализации методов StringsLearnModel slm = new StringsLearnModel(); CharCountMethod charCountMethod = new CharCountMethod(); // Вызываем и выводим лёгкий вариант реализации ------------------------ slm.CharCount = charCountMethod.GetCount("Some string here!"); Console.WriteLine($"Char count is: {slm.CharCount}\n\n"); // --------------------------------------------------------------------- // Вызываем сложный вариант реализации ---------------------------- slm = charCountMethod.GetCharCount("Some string here!"); // Пробегаем по всем элементам словаря foreach (var item in slm.CharacterDictionary) { // Выводим в консоль сообщение со значениями Console.WriteLine($"Word '{item.Key}' contain(s) {item.Value} time(s)"); } // --------------------------------------------------------------- }