我正在尝试寻找一种方法来找到一组字符串中最大的重复子字符串。longest duplicate substring problem通常适用于单个字符串,而不是一组字符串。在一组字符串中查找最大的重复子字符串时,哪种类型的算法是有用的?
在一组文件中查找最大的重复字符串(以便删除大型软件库中的重复代码)是我考虑的主要用例,但此算法还有许多其他用例。
例如,我希望在这组字符串中找到最长的重复子字符串:
"Hello world, this is the first string."
"Hello to the world, this is the second string."
"Hello world. This is the third string."
"This is the third string."在这种情况下,"This is the third string."将是最长的重复字符串(即,出现在这些字符串中的最长字符串)。
发布于 2013-03-07 06:38:17
也许this就是您正在寻找的,但是您需要将该算法应用于两个以上的字符串。如果你仔细想想,这并不难。另外,请看一下this page。使用回溯不是一个好主意。
发布于 2013-05-27 08:52:05
您的问题的答案是从幻灯片60 Click here开始
基本上,我们列出了字符串输入的所有可能后缀(线性时间)。对它们进行排序(NLogN),并通过排序列表(线性时间)找到最长的一个
发布于 2013-05-27 10:11:41
i
T(i)
string和值int M
对于每个Trie
T(i)中的每个节点P (其中P是前缀字符串),如果<T(i)>d31>中已经存在关键字
M[P]
M[P] = 1
在所有这样的pairs中,
(P*,C*)中找到M对,使得:C* >= 2 (*)length(P*)是最大的
P*是您希望使用的字符串
(*)如果您想要获取字符串中K共有的最长的子字符串,您可以用K替换2
https://stackoverflow.com/questions/15258687
复制相似问题