/***
*
* @param desk匹配串
* @return next数组
*/
public static int[] next(String desk) {
int next[] = new int[desk.length() + 1];
int i = 0, k = -1;
while (i < desk.length()) {
if (k == -1 || desk.charAt(i) == desk.charAt(k)) {
i++;
k++;
next[i] = k;
}
else {
next[k] = k;
}
}
return next;
}
/***
*
* @param string模式串
* @param desk匹配串
* @param next
* @return
*/
public static int kmp(String string, String desk, int next[]) {
int i = 0, j = -1;
int ans = 0;
while (i < string.length()) {
if (j == -1 || string.charAt(i) == desk.charAt(j)) {
i++;
j++;
} else {
next[j] = j;
}
if (desk.length() == j) {
ans = i;
return ans;//根据题意修改
}
}
return -1;
}