题目要求
键盘输入目标串(主串)s、模式串(子串)t,编写程序,实现顺序串的BF模式匹配算法。要求:匹配成功,输出位序,匹配不成功,显示相应提示信息。
例如:s=“aaaabcdcccc”,t=“abcd”。
因为程序很简单,所以就直接亮出完整代码,后续会发布一个串的一系列操作
完整代码
#include <stdio.h>
#define Max 200
typedef struct
{
char data[Max];
int length;
}Sqstring;
char str1[Max];
char str2[Max];
void Strassign(Sqstring &s,char str[])
{
int i;
for(i=0;str[i]!='\0';i++)
s.data[i]=str[i];
s.length=i;
}
int index(Sqstring s,Sqstring t)
{
int i=0,j=0;
while(i<s.length&&j<t.length)
{
if(s.data[i]==t.data[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
}
if(j>=t.length)
return (i-t.length);
else
return -1;
}
int main()
{
Sqstring s1,s2;
printf("请输入第一个字符串\n");
scanf("%s",str1);
Strassign(s1,str1);
printf("请输入第二个字符串\n");
scanf("%s",str2);
Strassign(s2,str2);
if(index(s1,s2)==-1)
printf("匹配不成功\n");
else
printf("匹配的第一个字符的下标为:%d\n",index(s1,s2));
return 0;
}