#include<iostream>
using namespace std;
int BF(char *s1, char *s2)
{
int i = 0; //记录主串要开始比较的位置
int j = 0; // 记录副串(姑且这么称呼)要开始比较的位置
while(s2[j] != '\0')
{
if(s1[i] == s2[j])
{ i++;j++; }
else
{
i = i-j+1; j = 0;
}
}
cout<<"j = "<<j<<endl;
if(j == strlen(s2))
return 1; //匹配成功返回 1
else
return -1; //匹配不成功返回 -1
}
int main()
{
char s1[20] = "xupengxjw";
char s2[20] = "peng";
cout<<BF(s1,s2)<<endl;;
return 0;
}
总结:
注意其中的回退代码怎么写和匹配过程要理解。回退代码:i = i - j + 1; j = 0; 。