kmp算法

来源:互联网 发布:音频处理器软件下载 编辑:程序博客网 时间:2024/05/21 04:01

int KMPindex(std::string& t,std::string& s)  {      int i=0,j=0;      int lens=s.length();      int lent=t.length();      int next[MaxSize];      Getnext(t,next);      while (j<lent&&i<lens)      {          if(j==-1||t[j]==s[i])          {              i++;              j++;          }          else              j=next[j];      }      if(j==lent)          return i-lent;      else          return -1;  }  

void Getnext(std::string& t,int nextval[])  {      int i=0,j=-1;      next[0]=-1;        int len=t.length();      while(i<len-1)      {          if(j==-1||t[i]==t[j])          {                      i++;              j++;              if(t[i]!=t[j])                  nextval[i]=j;              else                  nextval[i]=nextval[j];          }                     else              j=nextval[j];      }  }  











0 0
原创粉丝点击