package MyPackage;
import java.util.Arrays;
import java.util.Scanner;
import java.io.*;
import java.lang.management.MemoryType;
import java.util.*;
public class KMP
{
public static void main(String args[])
{
String string="Asdgew";
String aString="wrsdfagaAsdgew sdgewsdf Asdgew";
int[] res=gererateShuZu(string);
int end=0;
for(int i=0;i<aString.length();i++){
while(end>0&&aString.charAt(i)!=string.charAt(end)){
end=res[end-1];
};
if(aString.charAt(i)==string.charAt(end))end++;
if(end==string.length()){
System.out.println(i-string.length()+1+" ");
end=res[end-1];
}
}
}
static int[] gererateShuZu(String str){
int end=0;
int[] res=new int[str.length()];
for(int i=1;i<str.length();i++){
while(end>0&&str.charAt(i)!=str.charAt(res[end])){
end=res[end-1];
}
if(str.charAt(i)==str.charAt(res[end])){
end++;
}
res[i]=end;
}
return res;
}
}
KMP算法java实现
最新推荐文章于 2024-08-16 20:04:59 发布