KMP算法

来源:互联网 发布:java生成支付宝二维码 编辑:程序博客网 时间:2024/06/05 19:44

KMP算法

public class KmpmMethod {/**  * 具体的匹配  * @param str1  * @param str2  * @return  */   public static int kMPMatcher(String str1,String str2){           int i=0,j=-1;       int arr[]=next(str2);           while(i<str1.length()&&j<str2.length()){                    if(j==-1||str1.charAt(i)==str2.charAt(j)){              i++;              j++;          }          else j=arr[j];     }     if(j==str2.length())         return i-j;       return -1;   }   /**    * next函数    * @param str    * @return    */   public static int[] next(String str){               int j=-1,i=0;       int arr[]=new int[str.length()+1];       arr[0]=-1;               while(i<str.length()){           if(j==-1||str.charAt(i)==str.charAt(j)){               j++;               i++;               arr[i]=j;           }           else               j=arr[j];       }       return arr;   }   public static void main(String[] args) {   String str1="abcacbaaacabeabccaaa";   String str2="aacab";   int result=kMPMatcher(str1,str2);   if(-1==result){   System.out.println("没有找到匹配的字串");   }else{   System.out.println("匹配的位置为"+result);   }}}


0 0