题解 | #kmp算法#

kmp算法

http://www.nowcoder.com/questionTerminal/bb1615c381cc4237919d1aa448083bcc

在Carl那学的KMP算法

class Solution {
public:
    int kmp(string S, string T) {
        int ans = 0;
        int next[S.size()];
        int j = 0;
        next[0] = 0;
        for(int i = 1;i < S.size();i++)
        {
            while(j > 0 && S[i] != S[j])
                j = next[j - 1];
            if(S[i] == S[j])
                j++;
            next[i] = j;
        }
        j = 0;
        for(int i = 0;i < T.size();i++)
        {
            while(j > 0 && T[i] != S[j])
                j = next[j - 1];
            if(T[i] == S[j])
                j++;
            if(j == S.size())
            {
                ans++;
                j = next[j - 1];
            }
        }
        return ans;
    }
};
全部评论
我也是在Carl那学的,哈哈哈
2 回复 分享
发布于 2021-06-05 10:47
我有个问题,在第二个for循环的时候,while()后为什么是j=next(j-1);当模式串是abab时,主串是abacbab时就会出现问题!!! 应该是j=0;
点赞 回复 分享
发布于 2021-11-16 09:04
老哥,弱弱地问一句,Carl是?
点赞 回复 分享
发布于 2021-11-07 14:07

相关推荐

渐好:软光栅真的写明白了吗,既然是软渲那技术栈不应该使用OpenGL,光追和bvh既不算什么高级渲染技术更不应该属于软渲的内容,git那个项目没啥用,建议把前两个项目重新组织一下语言,比如软渲染那个项目 冯着色和msaa、贴图这几项分开写,写的到位点,如果你还学过光追那就单独写出来,如果没把握考官问你答不上来就别写给自己找麻烦,在技术栈那一栏简单提一下自己学过就行,这样杂的放在一起不太严谨,个人愚见.
点赞 评论 收藏
分享
04-29 18:07
常州大学 Java
寂静羽翼:兄弟我已经亲身经历了,双非没实习很多大厂还是会给笔试的,可是有的公司笔试做的好也不给面一直卡着,ssob基本看我没实习都拒绝我了,但是每天投满偶尔也能有一两场初创公司的面试,但是薪资基本在五六千
点赞 评论 收藏
分享
评论
8
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务