题解 | #kmp算法#

kmp算法

https://www.nowcoder.com/practice/bb1615c381cc4237919d1aa448083bcc

#include <cstdio>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算模板串S在文本串T中出现了多少次
     * @param S string字符串 模板串
     * @param T string字符串 文本串
     * @return int整型
     */
    void compute_next(string s,vector<int> &next,int size){
        int j=0;
        int i=1;
        while(i<size){
            if(j==0 || s[i]==s[j]){
                next[++i]=++j;
                //cout<<next.size()<<" "<<i<<endl;
            }else{
                j=next[j];
            }
        }
        return;
    }
    int kmp(string S, string T) {
        // write code hereS
        unsigned int size_S=S.size();
        unsigned int size_T=T.size();
        vector<int> next;
        //cout<<size_S<<endl;
        next.resize(size_S+1,0);
        compute_next(S, next, S.size());
        //cout<<next[size_s]<<endl;
        int i=0;
        int j=0;
        int result=0;

        while(i<size_T){

            if(j==0 || S[j] == T[i]){
                j++;
                i++;
            }else{
                
                j=next[j];
            }
            if(j==size_S){
                result++;
                j=next[j];

            }
        }

        return result;
    }
};

全部评论

相关推荐

04-09 09:47
门头沟学院 Java
Arbelite_:2-3k,这工资还不如去摇奶茶
点赞 评论 收藏
分享
04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务