【问题标题】:Best way to find similar elements in big array在大数组中查找相似元素的最佳方法
【发布时间】:2018-04-14 03:38:34
【问题描述】:

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

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

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

【问题讨论】:

  • 显然你也想在不研究或编写代码的情况下做到这一点?只需复制和粘贴?
  • 对倒序的数字排序并走一走?
  • 我希望你不是在编写软件来欺骗电话号码和自动拨打类似的号码,因为这并不酷。
  • 尝试以下操作:string[] input = {"9031017575", "9031139446","9031507575","9013009446","9023027575","9012204000"}; var groups = input.GroupBy(x => x.Substring(x.Length - 4)).ToList();
  • @Plutonix 不,有帮助就足够了。方法或有效算法的线索。

标签: c# arrays string list search


【解决方案1】:
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();

【讨论】:

  • 在这种情况下我可以再问一个问题吗?
猜你喜欢
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 2013-12-22
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多