美文网首页
c++实现的kmp算法

c++实现的kmp算法

作者: 邵俊颖 | 来源:发表于2018-08-13 16:30 被阅读0次
    int strStr(string haystack, string needle) {
        if (needle.length() == 0){
            return 0;
        }
        int next[needle.length()];
        getNext(needle,next);

        int i = 0,j = 0;
        while( i < (int)haystack.length() && j < (int)needle.length()&&(i - j) <(int)(haystack.length()-needle.length())+1 ){

            if ( j == -1 ||haystack[i] == needle[j]){
                j++;
                i++;
            } else{
                j = next[j];
            }
        }
        if (j == needle.length()){
            return i-needle.length();
        } else{
            return -1;
        }

    }
    void getNext(string needle,int next[]){
        int j = 0;
        int k = -1;

        next[0]=-1;

        while (j< needle.length()){
            if (k == -1 || needle[j] == needle[k]){
                ++j;
                ++k;
                next[j]=k;
            
//                if (needle[j] != needle[k]){
//                    next[j] = k;
//                } else{
//                    next[j] = next[k];
//                }

            } else{
                k = next[k];
            }
        }
    }

相关文章

  • KMP算法 C++实现

  • Implement strStr()

    标签: C++ 算法 LeetCode 字符串 KMP 每日算法——leetcode系列 问题 Implemen...

  • c++实现的kmp算法

  • 字符串匹配与KMP算法

    1.朴素字符串匹配算法 2.KMP算法 求前缀函数 实现KMP算法 3.测试代码

  • KMP算法

    写在前面 这篇文章针对的是C/C++/Java语言程序,所以我们的下标从零开始。 KMP算法的改进 KMP算法的改...

  • 算法(2)KMP算法

    1.0 问题描述 实现KMP算法查找字符串。 2.0 问题分析 “KMP算法”是对字符串查找“简单算法”的优化。 ...

  • KMP算法 理解与实现

    KMP算法,背景不必多说,主要想写一写自己对KMP算法的一些理解和其具体实现。关于KMP算法的原理,阮一峰老师的这...

  • KMP算法

    参考文献1.B站灯笼哥2.KMP算法python实现3.如何更好的理解和掌握 KMP 算法?

  • KMP 专题整理

    KMP 学习记录 kuangbin专题十六——KMP KMP 学习总结 朴素 KMP 算法 拓展 KMP 算法(E...

  • (303)查找-基于DFA的KMP字符串匹配

    概述 基于DFA的KMP算法。是根据DFA状态转换表来实现。下面是java实现的代码 理论 关于kmp理论部分 《...

网友评论

      本文标题:c++实现的kmp算法

      本文链接:https://www.haomeiwen.com/subject/ncuubftx.html