kmp算法

描述

给你一个文本串S,一个非空模板串T,问S在T中出现了多少次

数据范围:

1 \le len(S) \le 5*10^5, 1 \le len(T) \le 10^61≤len(S)≤5∗105,1≤len(T)≤106

复杂度要求:

O(n \cdot m) \O(n⋅m) 

示例1

输入:

"ababab","abababab"

复制返回值:

2

复制

示例2

输入:

"abab","abacabab"

复制返回值:

1
public int kmp (String S, String T) {
    int length = S.length();
    int i = T.length()-length;
    int count = 0;
    while(i>=0){
        String temp = T.substring(i,length+i);
        if(temp.equals(S)){
            count++;
        }
        i--;
    }
    return count;
}

上一篇:KMP相关题目


下一篇:Oulipo-欧力波(KMP字符串匹配问题)