先上传一个朴素的字符串匹配算法.。
他用一个循环来找出全部的有效位移,这个循环对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;
}
示例结果: