javakmp算法实现
时间: 2023-11-06 19:56:28 浏览: 142
java实现的kmp算法
4星 · 用户满意度95%
KMP算法是一种改进的字符串匹配算法,它的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。在Java中,可以通过以下代码实现KMP算法:
```java
public class KMP {
public static int KMP(String Str, String Sub, int pos){
if (Str == null || Sub == null){
return -1;
}
if (pos >= Str.length() || pos < 0){
return -1;
}
int i = pos;
int j = 0;
int[] next = new int[Sub.length()];
getNext(next, Sub);
while(i < Str.length() && j < Sub.length()){
if (j == -1 || Str.charAt(i) == Sub.charAt(j)){
i++;
j++;
} else {
j = next[j];
}
}
if (j >= Sub.length()){
return i - j;
} else {
return -1;
}
}
public static void getNext(int[] next, String sub){
next[0] = -1;
next[1] = 0;
int i = 2;
int k = 0;
while(i < next.length){
if (k == -1 || sub.charAt(k) == sub.charAt(i-1)){
next[i] = k + 1;
i++;
k++;
} else {
k = next[k];
}
}
}
}
```
阅读全文