1/*2*用KMP算法实现字符串匹配搜索方法3*该程序实现的功能是搜索本目录下的所有文件的内容是否与给定的4*字符串匹配,如果匹配,则输出文件名:包含该字符串的行5*待搜索的目标串搜索指针移动位数 = 已匹配的字符数 - 对应部分匹配值6*/78#include <stdio.h>9#include <string.h>10#include <stdlib.h>1112#...
#include<string.h> /*naive string-matching algorithm,T为原始字符串,P为需要匹配的字符串*/ void naiveMatch(char *T,char *P) { int lenT,lenP,i,j; lenT=strlen(T); lenP=strlen(P); if(lenT<lenP)/*需要匹配的字符串比原始字符串还要长出错*/ { perror("input error"); return ; } for(...
搜索词移动的时候,第一个"AB"向后移动4位(字符串长度-部分匹配值),就可以来到第二个"AB"的位置。 接下来,就是我自己对KMP算法的实现了。 这个算法的实现主要包括了三个方面: 1) 求得我们用来搜索字符串的部分匹配值表 2) 实现待搜索字符串在搜索过程中的指针的移动问题 3) 如何定位我们搜索到的结果 接下...
搜索词移动的时候,第一个"AB"向后移动4位(字符串长度-部分匹配值),就可以来到第二个"AB"的位置。 接下来,就是我自己对KMP算法的实现了。 这个算法的实现主要包括了三个方面: 1) 求得我们用来搜索字符串的部分匹配值表 2) 实现待搜索字符串在搜索过程中的指针的移动问题 3) 如何定位我们搜索到的结果 接下...
1.KMP的next数组生成方法。 根据链接中的15来看,可以根据搜索的字符串strKey的长度确定分析的次数(第一次显然是0),第1-len次分析的长度刚好就是左边字符个数(1-len),相应次数的前缀后最的共同元素的最长长度为对应next数组的值。 同时我们发现规律:根据前缀和后缀的特点,我们可以从每次分析的字符串(每次分析的字...