【问题标题】:Function to find longest common subsequences of a list of lists?查找列表列表的最长公共子序列的函数?
【发布时间】:2016-06-01 17:07:08
【问题描述】:

如何找到两个列表共有的最长子序列?例如:

["abcdefg", "abc__fg", "ab____g"] 

它应该返回:

["ab", "g"]

是否存在执行此操作的现有功能?您将如何从现有的组合中组合出一个?

【问题讨论】:

  • 正文中的问题与标题中的问题完全不同。
  • 我将问题编辑得更清楚。我不是在寻找任何主观的东西。我想知道如何解决这个问题。我假设有一些有用的功能可以做到这一点。谢谢!
  • 你真的在寻找最大个公共子序列吗?
  • @ErikR 我不确定。用例是从网络书籍中删除章节标题列表的公共部分。这些页面将在每一章中都有书名,我想从字符串列表中提取唯一的部分。
  • 公用部分会一直在开头和结尾吗?例如,ab 是最长的公共前缀,g 是最长的公共后缀。这真的会简化问题。

标签: list function haskell


【解决方案1】:

您正在寻找Data.List.CommonSubstring

$ ghci
λ: :m +Data.List.CommonSubstring
λ: longestSubstring "abcdefg" "abc__fg"
"abc"

不清楚您到底想要什么(最长的子序列或所有可能的子序列),因此请随意直接使用Data.SuffixTree 来实现所需的逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多