给定单词V的子词U是double,当它的形式为u = ww时,例如“abab”是“acdababx”的双子词,但“cdab”不是。
我需要一种算法来检查单词V的给定子字U是否为double。 V可以在线性时间内进行预处理,但任何特定U的答案应该具有恒定的时间复杂度,因为每个V都会有很多U.U作为间隔给出,例如如果V =“acdababx”, interval [3..6]对应于子词“daba”。
示例输入和输出:
V = abbacbacca
U =
这不是任何当前比赛的问题。
答案 0 :(得分:1)
这是一种算法,它声称在输入字的后缀树中标记所有双字的端点(或者在文献中通常知道,串联重复)(可以用O(n)构造)时间。当然,由于我没有完全访问该文章,我不确定它是否会满足O(1)查询时间。
论文是:Linear time algorithms for finding and representing all the tandem repeats in a string
希望有所帮助。