检测周期字符串



我正在尝试解决这个问题,我无法到达线性时间。

字符串 T 如果可以用以下形式表示,则称为周期性 的 T=购买力平价。P.
设计一个线性时间算法来决定 给定 T 是周期性的,如果它是真的,则找到最短的周期。

我的方法:如果T=AB=BA那么Tperiodical,我的算法会一直检查字符串是否可以这样表示,如果是,那么我检查其中的一半。
这需要O(n*log(n)) time.

谢谢大家

KMP 搜索算法部分计算最长的子字符串,该子字符串既是前缀又是后缀(短于整个字符串(。

如果将其应用于期刊字符串,则得到

len(string) - len(substring) = period 

len(子字符串( 必须> len(string(/2,否则没有句点。

找到的时间段也将是最短的时间段。

KMP 是线性的。

所以看看它(维基百科(。

最新更新