首页 > 解决方案 > 将字符字典转换为字符串字典

问题描述

我得到了一份带有以下声明的作业:

编写一个程序,计算字符串中除空格('')之外的所有字符。按以下格式打印所有匹配项:

{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

标签: c#arraysdictionarycount

解决方案


我不确定您的期望,但是如果您使用字符串而不是 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);
                }
            }

推荐阅读