2023-04-05-串的简单模式匹配(BF算法)
//串的简单模式匹配(BF算法)
#include <stdio.h>
#define MAXSIZE 30
typedef struct
{
char ch[MAXSIZE];
int length;
}SString;
int SString_BFindex(SString S,SString T)//串的简单的模式匹配算法,BF算法
{
int i=0,j=0;//字符串数组从0开始匹配
while(i<S.length && j<T.length)
{
if(S.ch[i]==T.ch[j])
{
i++;
j++;
}
else
{
i=i-j+1;//回到刚开始匹配的第一个位置,+1来从下一个位置开始匹配
j=0;
}
}
if(j=T.length)
{
return i-T.length+1;//i在最后一个元素比较时多加了一个1,此时的i就相当于元素在字符串中的位置,i-length就是比较的前一个位置,+1就是开始比较的位置
}
else
{
return 0;
}
}
int main()
{
SString s1={
"ababcabcacbab",
13
};
SString s2=
{
"abc",
3
};
int x = SString_BFindex(s1,s2);
printf("%d\n",x);
return 0;
}