Java中最常见的字符串匹配算法是KMP算法。KMP算法通过计算模式串的前缀数组,利用前面匹配过的信息,尽量减少重复匹配的次数,从而提高效率。以下是一个简单的KMP算法的Java代码示例:
public static int kmp(String txt, String pat) {
int i = 0, j = 0;
int[] next = getNext(pat);
while (i < txt.length() && j < pat.length()) {
if (j == -1 || txt.charAt(i) == pat.charAt(j)) {
i++;
j++;
} else {
j = next[j];
}
}
if (j == pat.length()) {
return i - j;
} else {
return -1;
}
}
private static int[] getNext(String pat) {
int[] next = new int[pat.length()];
next[0] = -1;
int i = 0, j = -1;
while (i < pat.length() - 1) {
if (j == -1 || pat.charAt(i) == pat.charAt(j)) {
i++;
j++;
next[i] = j;
} else {
j = next[j];
}
}
return next;
}