用最少的代码从一个字符串中找到出现频率最高的字符

崔鹏飞 2009-05-02 10:58:28
加精
抛砖引玉
public static void ThirdWay(string str)
{
var resultGroup = from aChar in str.ToCharArray()
group aChar by aChar;

int max = 0;

foreach (var one in resultGroup)
{
if (one.Count() > 0)
{
max = one.Count();
}
}

foreach (var one in resultGroup)
{
if (one.Count() == max)
{
Console.WriteLine("{0}字符出现了{1}次", one.Key, max);
}
}

}
...全文
4326 176 打赏 收藏 转发到动态 举报
写回复
用AI写文章
176 条回复
切换为时间正序
请发表友善的回复…
发表回复
PFdddd 2011-04-18
  • 打赏
  • 举报
回复
var linqStr = from r in RoleIDs
where r.ToString() == ","
group r by r into g
select g;
string count = linqStr.Count().ToString();
hejisan 2010-08-01
  • 打赏
  • 举报
回复
88楼的方法可以。
秒华 2010-04-28
  • 打赏
  • 举报
回复
好厉害,学习了
肖无疾 2010-04-28
  • 打赏
  • 举报
回复
为了一行代码疯掉了

int[] input = { 5, 1, 1, 1, 3, 3, 2, 2, 2, 4, 4 };
var query = input.GroupBy(n => n).GroupBy(n => n.Count()).OrderByDescending(n => n.Key).Select(n => new { count = n.Key, nums = n.Select(o => o).Select(p => p.Key).ToArray() });
bababoy 2009-06-22
  • 打赏
  • 举报
回复
咋跟得上哦
  • 打赏
  • 举报
回复
其实越新的语法它封装了内部细节
liyoubaidu 2009-05-28
  • 打赏
  • 举报
回复
up
skyhyanhust 2009-05-27
  • 打赏
  • 举报
回复
不错,学习了。


另外没必要鄙视linq了,当初C鄙视C++,C++鄙视C#,后来怎么着?



青山遮不住,毕竟东流去!
崔鹏飞 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 133 楼 xin_xiao 的回复:]
如果字符串里面有两个出现次数一样多的呢?怎么把两个都显示出来?
[/Quote]我也觉得是很多解法没有考虑到这个
newdigitime 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 LemIST 的回复:]
C# codepublic static void MostChar(string input)
{
int maxCount = 0; char maxChar = '\0';
while (input.Length > 0)
{
char tempChar = input[0];
int count = input.Length
- (input = input.Replace(input[0].ToString(), string.Empty)).Length;
if (count > maxCount)
{
maxCount = count;

[/Quote]

这个思路挺新颖.不过replace可能会影响效率
s000rd 2009-05-27
  • 打赏
  • 举报
回复
学习了
evaa006 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 81 楼 wartim 的回复:]
引用 7 楼 ojlovecd 的回复:
C# code
public static void ThirdWay(string str)
{
var group = from c in str group c by c into g orderby g.Count() descending select g;
Console.WriteLine("{0}字符出现了{1}次",group.First().Key,group.First().Count());
}


不知道为什么。linq看着就是不太舒服。。。。好像既不是程序语言也不是自然语言或是SQL语法,…
[/Quote]

相当暴力
xin_xiao 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 157 楼 cuipengfei1 的回复:]
引用 133 楼 xin_xiao 的回复:
如果字符串里面有两个出现次数一样多的呢?怎么把两个都显示出来?
我也觉得是很多解法没有考虑到这个
[/Quote]
期待高人結決此問題
清风道禅 2009-05-27
  • 打赏
  • 举报
回复
不错啊·LINQ还行·
csz_1987 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gomoku 的回复:]
char c = str.ToCharArray().GroupBy(ch => ch).OrderBy( g => -g.Count() ).First().Key;
[/Quote]

这个。。。这个。。。
zcw840421 2009-05-27
  • 打赏
  • 举报
回复
看完后回复,确实是牛人
itrefer 2009-05-27
  • 打赏
  • 举报
回复
不是一般的强!
kzm85 2009-05-22
  • 打赏
  • 举报
回复
4楼,顶
xzhunter 2009-05-22
  • 打赏
  • 举报
回复
真好笑。很多人对linq一无所知。

tommir3 2009-05-22
  • 打赏
  • 举报
回复
高手如云,必须Mark
加载更多回复(151)

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧