利用KMP求周期串思路

时间:2023-01-03 16:38:44
KMP算法。   这道题考察的是KMP算法中next数组的应用,必须理解透next[]数组代表的含义才能通过它解决这道题。   思路是先构造出 next[] 数组,下标为 i,定义一个变量 j = i - next[i] 就是next数组下标和下标对应值的差,如果这个差能整除下标 i,即 i%j==0 ,则说明下标i之前的字符串(周期性字符串长度为 i)一定可以由一个前缀周期性的表示出来,这个前缀的长度为刚才求得的那个差,即 j,则这个前缀出现的次数为 i/j 。所以最后输出i和i/j即可。     举这道题的第二组输入样例为   其next[]数组为:
 i 0  1  2  3  4  5  6  7  8  9  10 11
a[i] a a b a a b a a b a a b
next[i] -1 0 1 0 1 2 3 4 5 6 7 8

                        

利用KMP求周期串思路

  next[i]值是0或-1的忽略。


出处:http://www.cnblogs.com/yym2013/p/3586495.html

参考例题:hdu1358

参考:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html