先上传一个朴素的字符串匹配算法.。
他用一个循环来找出全部的有效位移,这个循环对n-m+1个可能的s每一个每一个字符检测条件P【1~m】 = T【s+1 ~ s+m 】 。
具体的代码如下:
#include <stdio.h> #include <string.h> int string_matcher(char *src,char *ptn){ int i=0,j=0; int slen = strlen(src); int plen = strlen(ptn); while(j<plen && i<slen){ if(src[i] == ptn[j]){ i++; j++; } else { i = i - j + 1; j = 0; } } if(j == plen) return i-plen; else return -1; } int main(){ char *s = "bacbababacabcbab"; char *p = "ababaca"; int loc = string_matcher(s,p); printf("%d\n",loc); getchar(); return 0; }