public class Main {
/**
* 用于计算匹配的位置(从头到尾)
* @param str
* @param sub
* @return
*/
public static int kmp(String str, String sub) {
if(str == null || sub == null || str.length() == 0 || sub.length() == 0){
throw new IllegalArgumentException("str或者sub不能为空");
}
int j = 0;
int[] n = next(sub);
for (int i = 0; i < str.length(); i++) {
while(j > 0 && str.charAt(i) != sub.charAt(j)){
j = n[j - 1];
}
if(str.charAt(i) == sub.charAt(j)){
j++;
}
if(sub.length() == j){
int i
KMP算法
最新推荐文章于 2024-11-16 09:45:51 发布