#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
//朴素查找算法(BF)俗称男朋友算法
int BF(const char *str,const char *sub,int pos)
{
int lens = strlen(str);
int lensub = strlen(sub);
if(pos<0 || pos>=lens)
{
return -1;
}
int i = pos;
int j = 0;
while(i<lens && j <lensub)
{
if(str[i] == sub[j])
{
i++;
j++;
}
else//回退
{
i = i-j+1;
j = 0;
}
}
if(j>=lensub)
{
return i-j;
}
else
{
return -1;
}
}
int main()
{
char *str="ababcabcdabcde";
char *sub="abcd";
printf("%d\n",BF(str,sub,3));
printf("%d\n",BF(str,sub,6));
printf("%d\n",BF(str,sub,10));
return 0;
}
打印结果为:
5
9
-1