美文网首页
KMP算法代码实现

KMP算法代码实现

作者: 无云清晨 | 来源:发表于2017-10-27 11:45 被阅读0次

先上代码

int  getNextArray(char a[], int n, int *p)
{
   if(NULL == a || 0 == n)
   {
      return -1;
   }

   p[0] = -1;
   p[1] = 0;
   int pos = 2;
   int ch = 0;

   while(pos < n)
   {
     if(a[pos] == a[ch])
     {
         p[pos] = p[pos - 1] + 1;
         pos ++;
         ch ++;

     }
     else if(0 != ch)
     {
       ch = p[ch];
     }
     else
     {
       p[pos] = 0;
       pos ++;
     }

   }

   return 0;

}

int matchIndex(char dest[],int destLen, char match[], int matchLen)
{
   if(NULL == dest || NULL == match || destLen < matchLen)
   {
     return -1;
   }

   int nextArray[N]={0};
   int nError = getNextArray(match,  matchLen, nextArray);
   if(0 != nError)
   {
     return -1;
   }

   int dIndex = 0;
   int mIndex = 0;
   while(dIndex < destLen && mIndex < matchLen)
   {
     if(dest[dIndex] == match[mIndex])
     {
        dIndex ++ ;
        mIndex++;
     }
     else
     {

        if(mIndex < 2)
        {
            dIndex ++;
            mIndex = 0;
        }
        else
        {
            mIndex = nextArray[mIndex-1] ;
        }
     }

    }

   if(mIndex == matchLen)
   {
      return dIndex - matchLen + 1;
   }
   else
   {
      return -2;
   }
}

相关文章

  • 字符串匹配与KMP算法

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

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

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

  • KMP算法代码实现

    先上代码

  • Swift 实现KMP算法

    使用swift语言实现了一下KMP算法,具体代码如下 详细的描述了KMP算法推导next数组的流程 改进后的nex...

  • KMP(二) 模式匹配算法实现

    概述:本文主要在代码层面上分析KMP的实现过程,如果您还不了解KMP的推导过程,请参考KMP(一) 模式匹配算法推...

  • 问答|KMP算法学习笔记

    问题 目录KMP是什么,做什么用的KMP算法的高效体现在哪如何KMP算法的next数组KMP的代码KMP的时间复杂...

  • 算法(2)KMP算法

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

  • KMP算法 理解与实现

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

  • KMP算法

    KMP算法是解决字符串匹配问题的有高效算法 代码:

  • KMP算法

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

网友评论

      本文标题:KMP算法代码实现

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