Javakmp算法代码
时间: 2024-05-27 21:06:08 浏览: 117
kmp算法-基于Java实现的kmp算法.zip
Java KMP算法是一种字符串匹配算法,用于在一个主文本字符串中查找一个子字符串。它的核心思想是通过预处理模式串,构建一个next数组,根据next数组的值调整匹配位置,从而实现快速匹配。
下面是Java实现KMP算法的代码:
```
public class KMP {
public static int[] getNext(String pattern) {
int[] next = new int[pattern.length()];
int j = 0;
for (int i = 1; i < pattern.length(); i++) {
while (j > 0 && pattern.charAt(j) != pattern.charAt(i)) {
j = next[j - 1];
}
if (pattern.charAt(j) == pattern.charAt(i)) {
j++;
}
next[i] = j;
}
return next;
}
public static int kmp(String text, String pattern) {
int[] next = getNext(pattern);
int j = 0;
for (int i = 0; i < text.length(); i++) {
while (j > 0 && text.charAt(i) != pattern.charAt(j)) {
j = next[j - 1];
}
if (text.charAt(i) == pattern.charAt(j)) {
j++;
}
if (j == pattern.length()) {
return i - j + 1;
}
}
return -1;
}
public static void main(String[] args) {
String text = "ABABDABACDABABCABAB";
String pattern = "ABABCABAB";
int pos = kmp(text, pattern);
if (pos != -1) {
System.out.println("匹配成功,匹配位置:" + pos);
} else {
System.out.println("匹配失败");
}
}
}
```
阅读全文