如何检测字符串中的回文周期长度?

时间:2015-06-18 19:03:17

标签: string algorithm palindrome

假设一个字符串就像这个“abaabaabaabaaba”,这里的回文周期是3,因为你可以在每个第3个位置找到字符串aba,你可以通过将任意数量的“aba”连接到字符串来增加回文。

我认为使用Manacher算法可以有效地检测到这种情况但是如何?

1 个答案:

答案 0 :(得分:3)

您可以通过搜索S + S中的字符串S轻松找到它。您找到的第一个索引是您想要的循环数(可能是整个字符串)。在python中它将是:

In [1]: s = "abaabaabaabaaba"

In [2]: print (s+s).index(s, 1)
3

1会忽略索引0,这将是一个微不足道的匹配。