如何将KMP算法应用于http://www.spoj.com/problems/PERIOD/等字符串问题?

时间:2014-08-19 16:47:42

标签: string algorithm data-structures substring computer-science

我已经学习了KMP算法,但未能在字符串问题中实现它。 谁能建议我如何使用KMP算法在SPOJ中完成上述问题? 链接:http://www.spoj.com/problems/PERIOD/

1 个答案:

答案 0 :(得分:5)

假设长度为i的前缀的前缀函数为p[i] 如果是i mod (i - p[i]) == 0,那么K = i / (i - p[i])其他K = 1(证据的概念是任何时段都是最小时段的倍数,而最小时段恰好是i - p[i])。
因此,您可以使用KMP算法为字符串的所有前缀计算前缀函数,然后使用上面的公式。