假设一个字符串就像这个“abaabaabaabaaba”,这里的回文周期是3,因为你可以在每个第3个位置找到字符串aba,你可以通过将任意数量的“aba”连接到字符串来增加回文。
我认为使用Manacher算法可以有效地检测到这种情况但是如何?
答案 0 :(得分:3)
您可以通过搜索S + S中的字符串S轻松找到它。您找到的第一个索引是您想要的循环数(可能是整个字符串)。在python中它将是:
In [1]: s = "abaabaabaabaaba"
In [2]: print (s+s).index(s, 1)
3
1
会忽略索引0
,这将是一个微不足道的匹配。