关于计算数组中相同数字的次数,然后分别输出

hacinemi 2016-08-31 12:31:32
假设有个数组串:1233212231
做了处理之后输出的形式:
1:3
2:4
3:3
请问这个如何解决,谢谢~
...全文
418 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hacinemi 2016-09-01
  • 打赏
  • 举报
回复
引用 3 楼 mirror030 的回复:
简单思路 遍历字符串,比较,相等则记数加1,每比较一个数后,删除它 string str = "1233212231"; Dictionary<string, int> result = new Dictionary<string, int>(); foreach (char item in str) { foreach (char i in str) { if (item == i) { if (result.ContainsKey(item.ToString())) result[item.ToString()]++; else result.Add(item.ToString(), 1); } } str = str.Replace(item, new char { });// 比较之后,删除掉这个字符,否则会重复计算 }
我想获取每条记录的前18位,那个是每条sql的执行时间,后面是执行次数,我想求个总时间。 foreach (var v in txt.GroupBy(x => x).Select(x => new { k = x.Key, c = x.Count() })) { sw.WriteLine("{0}\t{1}", v.k, v.c); } 这是我现在的代码,请问如何完善,谢谢
hacinemi 2016-09-01
  • 打赏
  • 举报
回复
引用 2 楼 yuankaiwsl 的回复:
Console.WriteLine(string.Join("\n", s.GroupBy(c => c).Select(g => g.Key + ":" + g.Count())));
我想获取每条记录的前18位,那个是每条sql的执行时间,后面是执行次数,我想求个总时间。 foreach (var v in txt.GroupBy(x => x).Select(x => new { k = x.Key, c = x.Count() })) { sw.WriteLine("{0}\t{1}", v.k, v.c); } 这是我现在的代码,请问如何完善,谢谢
hacinemi 2016-09-01
  • 打赏
  • 举报
回复
引用 1 楼 Return_false 的回复:
 var result ="1233212231".GroupBy(a => a).Select(a => new { 
                key=a.Key.ToString(),
                count=a.Count()
            });
            /*
            +		[0]	{ key = "1", count = 3 }	<Anonymous Type>
            +		[1]	{ key = "2", count = 4 }	<Anonymous Type>
            +		[2]	{ key = "3", count = 3 }	<Anonymous Type>
             */
没有分了,请问能帮我解决这个问题吗?谢谢~ 我想获取每条记录的前18位,那个是每条sql的执行时间,后面是执行次数,我想求个总时间。 foreach (var v in txt.GroupBy(x => x).Select(x => new { k = x.Key, c = x.Count() })) { sw.WriteLine("{0}\t{1}", v.k, v.c); } 这是我现在的代码,请问如何完善,谢谢
巴士上的邂逅 2016-08-31
  • 打赏
  • 举报
回复
Console.WriteLine(string.Join("\n", s.GroupBy(c => c).Select(g => g.Key + ":" + g.Count())));
  • 打赏
  • 举报
回复
 var result ="1233212231".GroupBy(a => a).Select(a => new { 
                key=a.Key.ToString(),
                count=a.Count()
            });
            /*
            +		[0]	{ key = "1", count = 3 }	<Anonymous Type>
            +		[1]	{ key = "2", count = 4 }	<Anonymous Type>
            +		[2]	{ key = "3", count = 3 }	<Anonymous Type>
             */
by_封爱 版主 2016-08-31
  • 打赏
  • 举报
回复
这就是分组啊... 按照1#的就行了
angel6709 2016-08-31
  • 打赏
  • 举报
回复
引用 1 楼 Return_false 的回复:
 var result ="1233212231".GroupBy(a => a).Select(a => new { 
                key=a.Key.ToString(),
                count=a.Count()
            });
            /*
            +		[0]	{ key = "1", count = 3 }	<Anonymous Type>
            +		[1]	{ key = "2", count = 4 }	<Anonymous Type>
            +		[2]	{ key = "3", count = 3 }	<Anonymous Type>
             */
=
mirrorspace 2016-08-31
  • 打赏
  • 举报
回复
简单思路 遍历字符串,比较,相等则记数加1,每比较一个数后,删除它 string str = "1233212231"; Dictionary<string, int> result = new Dictionary<string, int>(); foreach (char item in str) { foreach (char i in str) { if (item == i) { if (result.ContainsKey(item.ToString())) result[item.ToString()]++; else result.Add(item.ToString(), 1); } } str = str.Replace(item, new char { });// 比较之后,删除掉这个字符,否则会重复计算 }

110,533

社区成员

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

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

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