package com.kmp;
public class KMP算法 {
public static void main(String[] args) {
System.out.println(IndexKmp("abcdsgacvabcfinacbd","bcfi"));
}
public static int[] getNext(String stringC) {
String stringS = stringC;
int[] arr = new int[stringC.length()];
arr[0] = -1;
int c = 0, d = -1;
while (c < stringC.length() - 1) {
if (d == -1 || stringC.charAt(c) == stringS.charAt(d)) {
c++;
d++;
arr[c] = d;
} else {
d = arr[d];
}
}
return arr;
}
public static int IndexKmp(String s1, String s2) {
int[] arr = getNext(s2);
int c = 0, d = -1;
while (c < s1.length() && d < s2.length()) {
if (d == -1 || s1.charAt(c) == s2.charAt(d)) {
c++;
d++;
} else {
d = arr[d];
}
}
return d == s2.length() ? c - d : -1;
}
}
Java实现kmp算法
最新推荐文章于 2023-02-17 23:44:58 发布