Как посчитать количество повторений каждой буквы в строке?

Подскажите как решить задачку? Нужно подсчитать количество повторений каждой буквы в строке. Написал такой код, но он выдаёт строку целиком. Не могу понять как разбить на символы и добавить вместе со значением в словарь.
Dictionary<string, int> letterDictionary = new Dictionary<string, int>();

            string text;
            string textLow;
            string textFormat;
            int count = 0;

            Console.WriteLine("Введите текст: ");
            text = Console.ReadLine();
            textLow = text.ToLower();
            textFormat = textLow.Replace(" ", "").Replace(",", "").Replace("!", "");

            for (int i = 0; i < textFormat.Length; i++)
            {
                if (textFormat[0] == textFormat[i])
                {
                    count++;
                }
            }
            letterDictionary.Add(textFormat, count);

            foreach (var pair in letterDictionary)
            {
                Console.WriteLine($"Буква: {pair.Key}, повторений: {pair.Value}");
            }

Ссылка на онлайн-компилятор
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 2
@firstmixon
public Dictionary<string, int> Math_str(string value) 
{
  Dictionary<string, int> res = new Dictionary<string, int>()
  
  for(int i=0;i<value.Length();i++)
    {  
      if(!res.ContaintKey(value[i]))
       {
         res.Add(value[i],0);
       }
        res[value[i]]++;
    }

  return res;
}
Ответ написан
Комментировать
@roqin
Трепыхаюсь потихоньку
Не, если требуется только подсчитать повторение каждой буквы в строке, то можно и так подсчитать (только, просьба, не сравнивать по производительности и расходу памяти с другими предложениями :) )
using System;
using System.Linq;

var testString = "ksajfdsklfhsadkl;";

var result = testString.AsEnumerable()
    .GroupBy(x => x)
    .Select(x => (x.Key, x.Count()));

foreach(var x in result) Console.WriteLine($"{x.Item1}:\t{x.Item2}");
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы