用于查找列表列表中最长公共子序列的函数?

时间:2016-06-01 17:07:09

标签: list function haskell

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

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

它应该返回:

["ab", "g"]

是否存在执行此功能的现有功能?你会如何从现有的中组成一个?

1 个答案:

答案 0 :(得分:1)

您正在寻找Data.List.CommonSubstring

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

目前还不清楚你想要什么(最长的子序列或所有可能的子序列),所以可以直接使用Data.SuffixTree来实现所需的逻辑。