检测周期性字符串

时间:2018-01-25 11:43:09

标签: string algorithm

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

  

如果字符串T可以在表单中表示,则称其为字段   T = PPP..P。
  设计一个线性时间algorthim来决定是否a   如果T是周期性的,如果是真的,找到最短的周期。

我的方法: 如果T=AB=BA然后Tperiodical,我的算法会继续检查字符串是否可以表示,如果是,那么我检查它的一半。
它需要O(n*log(n)) time

谢谢你们

1 个答案:

答案 0 :(得分:0)

KMP搜索算法在一定程度上计算了最长的子字符串,它既是前缀又是后缀(短于整个字符串)。

如果您将它应用于期刊字符串,您将获得

isinstance(C, typing.Callable)

len(substring)必须是> len(string)/ 2,否则没有句号。

发现的时期也将是最短的时期。

KMP是线性的。

请查看(wikipedia)。