用c语言完成键盘输入目标串(主串)s、模式串(子串)t,编写程序,实现顺序串的BF模式匹配算法。要求:匹配成功,输出位序,匹配不成功,显示相应提示信息。 例如:s=“aababcdcccc”,t=“bcd”。
时间: 2024-05-27 15:12:50 浏览: 165
好的,这是一道关于 C 语言字符串匹配算法的问题。根据要求,我们可以使用顺序串的 BF 模式匹配算法,具体步骤如下:
1. 依次将模式串 t 从主串 s 的位置 0 开始,尝试与主串中的每个子串进行匹配。
2. 如果匹配成功,输出位序,并退出程序。
3. 如果匹配失败,则继续尝试匹配下一个子串,直到所有子串都尝试了一遍,仍未匹配成功,则输出相应提示信息。
下面是使用 C 语言实现 BF 模式匹配算法的示例代码:
#include<stdio.h>
#include<string.h>
int BF_match(char *s, char *t);
int main()
{
char s[] = "aababcdcccc";
char t[] = "bcd";
BF_match(s, t);
return 0;
}
int BF_match(char *s, char *t)
{
int i, j;
int slen = strlen(s), tlen = strlen(t);
for (i = 0; i <= slen - tlen; i++)
{
for (j = 0; j < tlen; j++)
{
if (s[i + j] != t[j]) // 一旦匹配失败,退出循环
break;
}
if (j == tlen) // 匹配成功,输出位序并退出程序
{
printf("匹配成功,位序为:%d\n", i);
return i;
}
}
printf("匹配失败,未找到该子串\n"); // 匹配失败,输出提示信息
return -1;
}
希望我的回答能够帮助到你。如果你有更多关于 C 语言的问题,欢迎继续提问。
阅读全文