题解 | #kmp算法#

kmp算法

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

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算模板串S在文本串T中出现了多少次
     * @param S string字符串 模板串
     * @param T string字符串 文本串
     * @return int整型
     */
    int kmp(string S, string T) {
        int next[S.length()],sum=0;
        next[0]=0;
        for(int i=1,j=0; i<S.length(); )
        {
            if(S[i]==S[j])
                next[i++]=++j;
            else if(j)
                j=next[j-1];
            else
                next[i++]=0;
        }
        for(int i=0,j=0; j<T.length(); )
        {
            if(S[i]==T[j])
            {
                i++,j++;
                if(i==S.length())
                {
                    i=next[i-1];
                    sum++;
                }
            }
            else if(i)
                i=next[i-1];
            else
                j++;
        }
        return sum;
    }
};

KMP算法:算特征数组:abcadabcab
0001012342

全部评论

相关推荐

自来熟的放鸽子能手面...:等捞就好了,你这种情况被捞的概率挺大的
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-14 19:09
darius_:给制造业搞的,什么物料管理生产管理,设备管理点检,最最关键的就是一堆报表看板。个人觉得没啥技术含量都是些基本的crud,但是业务很繁琐那种
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务