各位帮忙给个好的算法

.Net技术 码拜 9年前 (2016-05-09) 761次浏览
问题说明:得到一个大的字符串,由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……

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);

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明各位帮忙给个好的算法
喜欢 (0)
[1034331897@qq.com]
分享 (0)