C++kmp算法模板代码解读

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  导读:C++编程语言中的模板应用是一个比较复杂的应用技术,我们今天就先从C++ kmp算法模板的基本应用开始学习,从而加深我们对这方面知识的认识程度,方便将来的应用,提高编程效率。考试大免费提供大量实用资料,不用东奔西跑搜寻资料,备考费用更加低廉!报名欲速

  在使用的时候加上这两行代码就行了

  #include < vector>   using namespace std;

  C++ kmp算法模板参数说明

  const T *source 待匹配的字符串

  TL sourceLen 待匹配字符串的长度

  const T *pattern 模式串

  TL 模式串长度

  C++ kmp算法模板代码示例:

  template < class T,class TL>   inline int kmpmatch(const T *source,TL sourceLen,const T *pattern,TL patternLen)

  {   vector< int> next;

  for ( int i = 0; i <  patternLen ; i ++ )   next.push_back(0);   next[0] = -1;   for( int i = 1 ; i <  patternLen ; i ++ )

  {   int j = next[i - 1];

  while ( (pattern[i] != pattern[i + 1])&& (j >= 0))

  {   j = next[j];   }

  if ( pattern[i] == pattern[j + 1])

  {   next[i] = j + 1;   }

  else   {   next[i] = -1;   }   }

  int i = 0;   int j = 0;

  while (( i <  sourceLen ) && ( j <  patternLen ))

  {   if ( source[i] == pattern[j] )

  {   i ++;   j ++;   }   else if ( j == 0 )

  {   i ++;   }   else   {   j = next[j - 1 ] + 1;   }   }

  if ( j >= patternLen )

  {   if ( !next.empty() )

  next.clear();

  return i - patternLen ;

  }

  else

  {   if ( !next.empty() )   next.clear();

  return -1;   }   }

  编辑特别推荐:

  C++调用PHP

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答