【问题标题】:Search for same substrings in a list of strings [closed]在字符串列表中搜索相同的子字符串 [关闭]
【发布时间】:2013-05-02 09:17:33
【问题描述】:

我有一个字符串列表(大约 18000 个项目),我需要在这个列表中找到相同的子字符串。贝娄是一个例子: 列表示例: “测试1” “测试 2” “东部时间 2” “西1”

我需要这个结果:

“测试” - 2

“est” - 4

“est1” - 2

"est 2" - 2

我需要它使用 linq 来快速搜索(如果可能的话)。 提前致谢

【问题讨论】:

  • LINQ 不一定会使操作快速。无论如何,LINQ 都被编译成适当的 for 循环...
  • 如果您显示what you've tried so far,您会发现人们更愿意提供帮助。
  • 我认为 all 字符串(如您的示例中)的任何解决方案都可能是 O(N^2) 所以它不会非常快。检查每个单独的字符串将是 O(N)。只是为了确认一下:如果我们将字符串“e”添加到您的示例字符串列表中,那么计数是否为 5? (因为它在“e”、“test”、“est”、“est1”和“est 2”中)
  • 您有一个包含大量字符串的列表,并且想要检测(并计算)常见的子字符串?祝你好运......基本上你需要遍历每一个字符串,构建所有可能的子字符串(Dictionary<string, int>中的键并计算每个键的出现。这变慢。
  • @MatthewWatson,通常你是对的,如果我们在列表中添加 e,我将需要结果 e - 5。在实际情况下,我将忽略长度为 的子字符串

标签: c# .net


【解决方案1】:

这就是你想要的:

var listWithSubstring = originalList.Where(i => i.Contains("est"));

【讨论】:

  • 也许 .Count 就足够了,但这也将涵盖它
  • 好吧,我不太确定@SergiuCojocaru 想要什么,但这应该足够了。尽管您可能是对的,但我可以在回答中提及.Count/.Count()
  • 井字符串可能包含也可能不包含 est。我需要找到所有相似的子字符串。例如,如果在上面的列表中我将添加“home”和“omen”,算法将需要显示以前的结果 + ome -2。所以其实我不知道编码阶段的初始列表。
  • @SergiuCojocaru 那么你想找到公共子字符串,这太 big (至少没有你的一些代码)来回答这个问题。不过我可以引导你到this question
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-30
  • 2020-07-27
  • 1970-01-01
  • 2016-04-21
  • 2019-10-06
相关资源
最近更新 更多