KMP java

private static void getnext(String p, int [] next)

{

for(int i =0;i<p.length();i++)

{

next[i]=0;

while(next[i]<i-1 && p.charAt(next[i])==p.charAt(i-1-next[i]))

next[i]++;

}

}

 

private static int kmp(String s, String p, int[] next)

{

int i=0,j=0;

for(;i<  s.length() && j<p.length();)

{

if(j==0 && s.charAt(i) != p.charAt(j))

{

i++;

}

if(s.charAt(i) == p.charAt(j))

{

i++;

j++;

}

else j=next[j];

}

if(j==p.length())

return i-j;

return 0;

}

 

有空了解一下bm算法

posted @ 2015-12-21 12:40  zhou09  阅读(183)  评论(0编辑  收藏  举报