【发布时间】:2018-11-07 06:45:16
【问题描述】:
我得到了一份带有以下陈述的作业:
编写一个程序,计算字符串中除空格('')之外的所有字符。 按以下格式打印所有匹配项:
{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
【问题讨论】:
-
假设您只需要担心 ASCII,只需创建一个包含 256 个元素的整数数组。使用字符(1 个字节)作为数组的索引来增加/恢复计数。将比 SortedDictionary 快得多。
-
练习是用字典完成的,ASCII 不是必需的。它应该计算一个字符在给定字符串中出现的次数。
-
您能否澄清一下:作业是否规定了字典的使用?排序字典?还是您认为可以通过使用字典来避免 ASCII?
标签: c# arrays dictionary count