преобразовать словарь в строковый словарь - PullRequest
0 голосов
/ 07 ноября 2018

Мне дали домашнее задание со следующим утверждением:

Напишите программу, которая считает все символы в строке, кроме пробела (''). Распечатать все вхождения в следующем формате:

{char} -> {occurrences}

Я написал программу в char, но получаю сообщение об ошибке тайм-аута, когда отправляю ее в домашнюю систему. Вот мой код:

SortedDictionary<char, int> text = new SortedDictionary<char, int>();
char[] characters = Console.ReadLine() 
    .Where(x => !Char.IsWhiteSpace(x))
    .ToArray();
foreach (var character in characters)
{
    if (text.ContainsKey(character))
    {
        text[character]++;
    }
    else
    {
        text.Add(character, 1);
    }
}
foreach (var character in text.OrderByDescending(x => x.Value))
{
    Console.WriteLine($"{character.Key} -> {character.Value}");
}

Я не могу понять, как читать это как строку, и все равно получаю результат. Вот пример:

"text text text" = t -> 6 e -> 3 x -> 3

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Я не уверен, что вы ожидаете, но если вы используете строку вместо массива char, это может немного улучшить производительность:

            var text = new SortedDictionary<char, int>();
            var inputText = Console.ReadLine();

            foreach (var character in inputText)
            {
                if (character == ' ')
                {
                    continue;
                }

                if (text.ContainsKey(character))
                {
                    text[character]++;
                }
                else
                {
                    text.Add(character, 1);
                }
            }
0 голосов
/ 07 ноября 2018

Так что, если я правильно вас понял, все, что вам нужно, это правильно вывести результаты. Это должно сделать трюк:

foreach (var character in text.OrderByDescending(x => x.Value))
{
    Console.WriteLine(String.Format("{0}->{1}", character.Key, character.Value));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...