【发布时间】:2014-01-17 05:34:47
【问题描述】:
我需要找到最大(子串长度*计数)的最长公共子串。
例如,当我有字符串时:
hi, hello world ... hello world ... hi, hello world
答案是hello world,因为(11 * 3) > (15 * 2)。
我在这个question 中找到了相关讨论,但在我的情况下使用它并不实用,因为它的内存使用率很高。
有没有更好的方法来做到这一点?
【问题讨论】:
-
在Wikipedia article 中有一个使用动态编程的伪代码解决方案。
-
一点。他正在寻找最长的子串。我正在寻找占用字符串中大部分空间的子字符串(子字符串的最大长度 * 计数)
-
“使用它是不切实际的,因为它占用大量内存”。我不同意。您将在 trie 中插入每个字符串,其中的字符数小于每个字符串的字符总和。如果字符串太多无法放入内存,您可以划分问题
-
google "广义后缀树"
标签: algorithm