KMP 算法 java实现

来源:互联网 发布:linux内核设计及实现 编辑:程序博客网 时间:2024/06/05 09:17

KMP算法讲解


我的Java代码实现


package jj4_6;public class KMP {public static boolean contains(String a,String b){/* * 第一步,对b字符串做一个预处理 */Integer[] fuzhu = new Integer[b.length()];for(Integer i= 0;i<b.length();i++){// i == 3 时// nowstr = "abab"String nowstr =b.substring(0, i+1); fuzhu[i] = 0;for(Integer j =i;j>0;j--){// left = "aba"String left = nowstr.substring(0,j);// right = "bab";String right = nowstr.substring(i-j+1, nowstr.length());if( left.equals(right) ){fuzhu[i] = j;break;}}}/* * 完成匹配 */for(Integer i = 0;i <= a.length()-b.length();){Integer j;for(j =0;j<b.length();j++){if(a.charAt(i+j) != b.charAt(j)){/* * 计算i的移动距离 */if(j==0)i++;elsei = i +  ( (j-1) + 1 - fuzhu[(j-1)]);/* * 重新开始匹配 */break;}}if(j == b.length())return true;}return false;}}


0 0
原创粉丝点击