如何比较一组字符串以查找公共子字符串

时间:2011-01-13 16:38:02

标签: string grep substring text-comparison

我正在尝试创建一个脚本,该脚本查看字符串文件列表并报告它们之间最常见的子字符串。

例如:

  1. 您好,我是第一个字符串。我喜欢苹果和橘子。我们都在这里。
  2. 你好,我是第二串。我喜欢苹果和橘子。我们都在这里。
  3. 您好,我是第三列。我喜欢苹果和橘子。我们都在这里。
  4. 您好,我是第四列。我喜欢苹果和橘子。我喜欢表达我的个性。
  5. 我想让脚本告诉我字符串之间的常见元素是什么,超过某个阈值(例如,5个字符)。

    理想情况下,我会被告知

    • “我喜欢苹果和橘子”出现在所有文件中
    • “Hello,我是字符串”出现在所有文件中
    • “我们都是字符串”在三个文件中出现。

    如果在我熟悉的技术中存在这样的功能 - SQL,Javascript,PHP,Ruby或Bash - 我会非常高兴...

    非常感谢,

    杰克

1 个答案:

答案 0 :(得分:2)

这是一个很难解决的问题Longest common subsequence problem

以下是使用动态编程的算法的Python实现:http://www.algorithmist.com/index.php/Longest_Common_Subsequence

我认为任何标准库(C,Java,PHP,Python,Javascript,Ruby等)都不具备这样的功能。但您可以在此处查找实现:http://www.google.com/codesearch?q=%22longest+common+subsequence%22