KMP算法(三)
来源:互联网 发布:js不等于比较大小 编辑:程序博客网 时间:2024/06/05 00:07
针对之前的两篇博文,写的KMP的C代码实现:
#include <stdio.h>#include <string.h>int GetNext(char src[],int j){int i=0;if(j==0){return -1;}i=GetNext(src,(j-1));if(src[(i+1)]==src[j]){return (i+1);}else{while((src[i+1]!=src[j])&&(i>0||i==0)){i=GetNext(src,i);if(src[i+1]==src[j]){return (i+1);}}return -1;}}int kmp(char s[],char t[],int next[]){ int i,j; i=j=0; len_s=strlen(s);len_t=strlen(t);while(i<len_s&&j<len_t){if(s[i]==t[j]){i++;j++;}else{if(j!=0){ j=next[j]+1;}else{i++;j=0;}}}if(j==len_t)return i-len_t;elsereturn -1;} int main(){ char source[100]={0};char target[10]={0}; int next[50]={-2}; int i=0; printf("please input string source: \n"); scanf("%s",source); printf("input string : %s\n",source); printf("please input string target: \n"); scanf("%s",target); printf("input string : %s\n",target); for(i=0;i<strlen(target);i++) { next[i]=GetNext(target,i); printf("next[%d]= %d\n",i,next[i]); } printf("index : %d\n",kmp( source,target,next)); }
编译与执行:
0 0
- KMP算法(三)
- 数据结构学习笔记(三)字符串及KMP算法
- 【kmp算法】数据结构实验之串三:KMP应用
- KMP算法学习三阶段由浅入深
- kmp算法(转载)
- KMP算法(转)
- (精)kmp算法
- (四)KMP算法
- KMP算法(1)
- KMP算法(2)
- KMP算法(站位)
- KMP算法(1)
- KMP算法(2)
- Period(KMP算法)
- KMP算法(模板)
- KMP算法(二)
- KMP算法(一)
- KMP算法(转)
- 抉择
- Android:Material Design(三) 动画
- 【2015/10/3】Linux学习日志_Day5 SSH 压缩解压 repo文件 自制yum源
- Android面试题记录。持续更新。
- 单调队列优化dp [HDU2191][HDU3401][POJ1821]
- KMP算法(三)
- ZOJ 3760 Treasure Hunting(最大流)
- linux虚拟机无法连接网络
- Android4.0以上调用设置方法
- Android 弹出通知Toast的使用
- Android studio 更新只显示"Download”的解决办法
- initWithFrame方法(初始化UIView)
- 惯性导航之认识欧拉角(二)
- 菩萨蛮 寄情愁