Java中最常见的字符串匹配算法是什么?

我正在寻找Java中最常见的字符串匹配算法。我创建了一个字符串,想要在该字符串中查找指定的子字符串。我听说有一些非常流行的字符串匹配算法,但我并不确定哪个是最常见的。我希望有Java专家能为我指出正确的算法,或者提供一些代码示例来帮助我在我的项目中实现字符串匹配功能。

提问时间:2023-07-31 04:24:03 编辑时间:2023-07-31 04:24:05 提问者: Sunflower_Smile
  • 雨夜迷情
    6

    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;  
    } 
    
    回答时间:2023-07-31 04:24:08