算法原理
朴素的模式匹配算法(Brute-Force)又称为古典型的、有回溯的算法。
BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,
若相等,则继续比较S的第二个字符和T的第二个字符;
若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去;
直到得出最后的匹配结果。
C代码实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int find(char *s,char *t) {
int i=0,j=0;
while(i<strlen(s) && j<strlen(t)) {
if(s[i] == t[j]) {
i++;
j++;
} else {
i=i-j+1;//回溯
j=0;
}
}
// 判断是否匹配成功,并返回位置
if(j == strlen(t))
return i-strlen(t);
else
return -1;
}
int main() {
char s[10],t[10];
printf("请输入主串:\n");
scanf("%s",s);
printf("请输入模式串:\n");
scanf("%s",t);
int ret = find(s,t);
if(ret==-1)
printf("匹配失败...");
else
printf("匹配成功,模式串在主串中的位置是:%d",ret);
}
调试结果: