您的位置:首页 > 编程语言 > Java开发

KMP 算法 java实现

2015-04-06 18:07 295 查看
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++;
else
i = i +  ( (j-1) + 1 - fuzhu[(j-1)]);
/*
* 重新开始匹配
*/
break;
}
}
if(j == b.length())
return true;
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java