【发布时间】:2010-04-04 19:31:53
【问题描述】:
对于长度为L的字符串,我想找到在该字符串中出现n(n
例如,“BANANA”中出现2次或多次的最长子串是“ANA”,一次从索引1开始,再次从索引3开始。允许子串重叠。
字符串“FFFFFF”中出现3次以上的最长字符串为“FFFF”。
n=2 的蛮力算法将选择字符串中的所有索引对,然后一直运行直到字符不同。运行部分需要 O(L) 并且对数是 O(L^2) (不允许重复,但我忽略了这一点)所以对于 n=2,该算法的复杂度为 O(L^3)。对于较大的 n 值,它会呈指数增长。
有没有更有效的算法来解决这个问题?
【问题讨论】: