【发布时间】:2019-10-08 08:47:06
【问题描述】:
我想使用 System.Linq 编写一个返回字符串中第一个、最常见的字符的方法。 例如:“AABABBC”=> 'A'。 如果两个字母出现相同,则应返回字符串中出现的第一个。
下面的示例应该可以工作。但是,我试图找到一个更有效的解决方案,这并不意味着首先对字符进行排序。 我正在考虑使用 Enumerable.Aggregate() 来计算重复次数,同时还要遍历单词。不知道该怎么做,虽然...... 有任何想法吗?谢谢:)
public static char MostAparitionsChar(string word)
{
return word.GroupBy(x => x)
.OrderByDescending(x => x.Count())
.Select(g => g.Key)
.First();
}
【问题讨论】:
-
请问您的情况更有效是什么?它应该更快还是消耗更少的内存?
-
更快 :) 我不想在我的字符串中迭代 3 次,而是只想迭代一次
-
是什么让你认为你的代码会遍历你的字符串 3 次?
-
问题:如果所有字母的出现次数相同怎么办? “abcd”
-
是不区分大小写的匹配吗?
标签: c# .net linq aggregate ienumerable