问题说明:得到一个大的字符串,由3位数和空格组合而成,例如:”123 456 123 789 456 987 678 689 ………………………567″.这三位数在字符串中大致有10万个,讨教各位高手怎么样快速算出每个3位数在这个字符串中重复出现的次数?
求高手给个有个有效率的代码!万分感谢!
求高手给个有个有效率的代码!万分感谢!
解决方案
5
Dictionary<styring, int>
5
用hashSet
20
var s = "123 456 123 789 456 987 678 689"; var q = from x in s.Split(" ").ToArray() group x by x[0] into g select new { name = g.Min(p => p), cnt = g.Count()}; foreach (var x in q) Console.WriteLine(x);
有点无聊的是,本人不知道怎么样取分组键的值,所以只好出此下策(name = g.Min(p => p))
10
数据本身没序的话,那么只能循环遍历,也就谈不上效率
所以对于无序的内容,你可以直接用5L的group……
所以对于无序的内容,你可以直接用5L的group……
40
改一下上面的代码
var s = "123 456 123 789 456 987 678 689"; var q = from x in s.Split(" ") group x by x into g select new { name = g.Key, cnt = g.Count() }; foreach (var x in q) Console.WriteLine(x);