1.前言
最近在知乎上看了一个文章,该文章中对于该算法解释的简单明了,不像其他文章,把算法解释的过于妖魔化,文章地址.
我写本文章主要是对原作者写的 计算PMT数组的代码没看懂,所以按照作者的思想,写了个Java版本的实现,
思想就是目标字符串自己与自己匹配,求每一位的最大匹配长度,思想图如下:
2. PMT(Partial Match Table)求解思想
可以看到我把图中的next的index值改了,当时因为这个索引值,困惑我一会,所以每个都减1后,就好理解了
3. 代码实现
代码如下:
public static void main(String[] args) {
String a="abababca";
char[]array = a.toCharArray();
int []next= new int[8];
next[0]=0;
//起始位置为1
int index=1;
int j=0;
int count=0;
while (index<a.length()){
if (array[index] == array[j