package com.code;
public class KMP {
public static int index_KMP(String S,String T,int pos){
int[] next=get_next(T);
int i=pos;
int j=0;
while(i<S.length()&&j<T.length()){
if(j==-1||S.charAt(i)==T.charAt(j)){
++i;++j;
}
else{
j=next[j];
}
}
if(j>=T.length()){
return i-T.length();
}
return -1;
}
public static int[] get_next(String str){
int[] next=new int[str.length()];
next[0]=-1;
int i=0;
int j=-1;
while(i<str.length()-1){
if(j==-1||str.charAt(i)==str.charAt(j)){
++i;++j;
next[i] = j;
}
else{
j=next[j];
}
}
return next;
}
public static void main(String args[])
{
System.out.println( index_KMP("adgfdbc","bc",0));
}
}
KMP算法java
最新推荐文章于 2024-08-05 16:41:06 发布