Kmp算法Java代码实现
Posted 明耀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kmp算法Java代码实现相关的知识,希望对你有一定的参考价值。
public class KMP { public static void main(String[] args) { String str="ababxbababcadfdsss"; String subStr="abcad"; int[] next=getNext(subStr.toCharArray()); int p=kmp(next,str.toCharArray(),subStr.toCharArray()); System.out.println(p); } public static int[] getNext(char[] c) { int[] next=new int[c.length]; next[0]=0; for(int i=1,k=0;i<c.length;i++) { while(k>0&&c[k]!=c[i]) k=next[k-1]; if(c[k]==c[i]) k++; next[i]=k; } return next; } public static int kmp(int[] next,char[] str,char[] c) { for(int i=0,p=0;i<str.length;i++) { while(p>0&&str[i]!=c[p]) p=next[p-1]; if(str[i]==c[p]) p++; if(p==c.length) return i-c.length+1; } return -1; } }
以上是关于Kmp算法Java代码实现的主要内容,如果未能解决你的问题,请参考以下文章