package com.blog;
public class KmpTest {
public static void main(String[] args) {
//BBC ABCDAB ABCDABCDABDE
//ABCDABD
char[] parent = new String("BBC ABCDAB ABCDABCDABDE").toCharArray();
char[] son = new String("ABCDABD").toCharArray();
int[] next = getnext(son);
int i = 0;
int j = 0;
for (i = 0; i < parent.length; i++) {
while (j > 0 && parent[i] != son[j]) {
j = next[j-1];
}
if (son[j] == parent[i]) {
j++;
}
if (j == son.length) {
System.out.println("find the result --->" + (i - j) + "--->" + parent[i - j] );
break;
}
}
}
public static int[] getnext(char[] s) {
int[] next = new int[s.length];
int len;
int i, j;
len = s.length;
i = 0;
j = 0;
while (i < len) {
next[i] = j;
System.out.println(i + "--->" + j);
if (j == 0 || s[i] != s[j - 1]) {
j = 0;
}
++i;
++j;
}
return next;
}
}
KMP
最新推荐文章于 2024-11-16 09:45:51 发布