为了账号安全,请及时绑定邮箱和手机立即绑定

C# - 比较 2 个列表与自定义元素

C# - 比较 2 个列表与自定义元素

C#
弑天下 2021-07-01 05:08:26
我有 2 个列表。一个包含搜索元素,一个包含数据。我需要循环 list2 中的每个元素,其中包含 list1 中的任何字符串(“cat”或“dog”)。举些例子:List<string> list1 = new List<string>();list1.Add("Cat");list1.Add("Dog");list1.Add... ~1000 items;List<string> list2 = new List<string>();list2.Add("Gray Cat");list2.Add("Black Cat");list2.Add("Green Duck");list2.Add("White Horse");list2.Add("Yellow Dog Tasmania");list2.Add("White Horse");list2.Add... ~million items;我的期望是listResult: {"Gray Cat", "Black Cat", "Yellow Dog Tasmania"}(因为它在 list1 中包含“cat”和“dog”)。除了嵌套循环,您是否有任何想法让序列运行得更快?我目前的解决方案如下。但是......似乎太慢了:foreach (string str1 in list1){   foreach (string str2 in list2)   {      if str2.Contains(str1)      {         listResult.Add(str2);      }   }}
查看完整描述

3 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

包含将使用“天真的方法”进行字符串搜索。您可以通过研究字符串搜索算法来改进这一点。

一种方法是为所有搜索词创建一个通用的后缀树。然后遍历 list2 中的所有项目以查看它们是否匹配。

不过,这可能有点矫枉过正。您可以先尝试 fubo 提出的一些简单优化,看看这对您来说是否足够快。


查看完整回答
反对 回复 2021-07-03
  • 3 回答
  • 0 关注
  • 190 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信