在大数组中查找类似元素的最佳方法

时间:2017-11-01 18:21:30

标签: c# arrays string list search

我有一个一百万电话号码的字符串数组,我想找到那些在最后四位数字相似的数字。例如:

9031017575
9031139446
9031507575
9013009446
9023027575
9012204000

将是:

9031017575
9031507575
9023027575
9031139446
9013009446

列出了四个最后数字相似的唯一数字。

string[] Numbers = File.ReadAllLines(NumbersFilePath);
List<string> SimilarNumbers = new List<string>();
List<string> DissimilarNumbers = new List<string>();

我已经使用循环循环来比较所有元素和正则表达式以捕获最后四位数字(我想要忘记这个算法,然后通过一个更现代,更快速,更简单的数字!)。

1 个答案:

答案 0 :(得分:3)

string[] numbers = {"9031017575",
                    "9031139446",
                    "9031507575",
                    "9013009446",
                    "9023027575",
                    "9012204000"};

var similars = numbers.GroupBy(x => x.Substring(x.Length - 4))
                       .Where(g=>g.Count()>1)
                       .SelectMany(x => x)
                       .ToList();