kmp算法实现的字符串匹配

原创 2012年03月22日 23:50:19

#include<stdio.h>
#include<malloc.h>
int next[50];
void get_next(char *T,int *next)//求模式串的next数组
{
 int i=1,j=0;
 next[1]=0;//由定义知
 while(i<T[0])
 {
  if(j==0||T[i]==T[j])
  {
   ++i;
   ++j;
   next[i]=j;
  }
  else
  {
   j=next[j];
  }
 }
}
int Index_KMP(char *S,char *T,int pos)
{
 int i=pos;
 int j=1;
 while(i<=S[0]&&j<=T[0])
 {
  if(j==0||S[i]==T[j])
  {
   ++i;
   ++j;
  }
  else
  {
   j=next[j];
  }
 }
 if(j>T[0])
  return i-T[0];
 else
  return 0;
}
int main(int argc,char *argv[])
{
 char *S=(char*)malloc(sizeof(char)*256);
 char *T=(char*)malloc(sizeof(char)*25);
 printf("请输入源字符串的长度\n");
 scanf("%d",&S[0]);//注意不超过255
 printf("请输入源字符串\n");
 scanf("%s",S+1);
 printf("请输入模式串的长度\n");
 scanf("%d",&T[0]);
 printf("请输入模式串\n");
 scanf("%s",T+1);
 get_next(T,next);
 printf("%d\n",Index_KMP(S,T,1));
 return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

字符串匹配KMP算法讲解

  • 2011-06-04 09:15
  • 42KB
  • 下载

字符串匹配的KMP算法浅析

  • 2014-08-26 14:51
  • 139KB
  • 下载

C语言实现字符串匹配KMP算法

相信很多人(包括自己)初识KMP算法的时候始终是丈二和尚摸不着头脑,要么完全不知所云,要么看不懂书上的解释,要么自己觉得好像心里了解KMP算法的意思,却说不出个究竟,所谓知其然不知其所以然是也。 ...

字符串匹配的KMP算法

  • 2014-05-29 14:11
  • 2.02MB
  • 下载

字符串匹配KMP算法

  • 2012-09-03 13:41
  • 238KB
  • 下载

kmp算法实现字符串匹配

今天晚上知道了这个算法,看了后凭记忆理解自己又写了一遍,日后会加上注释和思路

字符串匹配算法之KMP算法

  • 2013-10-16 22:33
  • 2.97MB
  • 下载

字符串匹配KMP算法C++代码实现

看到了一篇关于《字符串匹配的KMP算法》(见下文)的介绍,地址:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93...

字符串匹配KMP算法实现

由于KMP算法比较难,所以建议初学者分两个阶段学习。 第一个阶段先理解算法思想,可以参考这篇文章:点击打开链接 第二个阶段,理解算法的具体实现,本文主要讲解这部分,需要注意的地方都在程序里了,自己看吧...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)