public class Main {
public static void main(String[] args) {
System.out.println(kmp("abxabcabcaby","abcabye"));
}
public static int[] computer(String str){
int[] arr = new int[str.length()];
int j = 0;
for (int i = 1; i < arr.length; i++) {
while (j>0&&str.charAt(j)!=str.charAt(i)) j = arr[j-1];
if(j == 0 && str.charAt(0)!=str.charAt(i)) {arr[i] = 0;continue;}
arr[i] = j+1;
j++;
}
return arr;
}
public static boolean kmp(String str,String point){
boolean flag = false;
int[] computer = computer(point);
int i1=0;
int i = 0;
while (i<str.length()){
if(i1 == point.length()-1 && point.charAt(i1)==str.charAt(i)) return true;
if(str.charAt(i)!=point.charAt(i1)){
i1 = computer[i1-1];
if(str.charAt(i)!=point.charAt(i1)){i1 = 0;i++;continue;}
}
i1++;i++;
}
return false;
}
}
kmp算法的实现(java代码)
最新推荐文章于 2024-10-05 12:07:50 发布