使用c语言编写一个程序,键盘输入目标串(主串)s、模式串(子串)t,编写程序,实现顺序串的BF模式匹配算法。要求:匹配成功,输出位序,匹配不成功,显示相应提示信息。 例如:s=“aaaabcdcccc”,t=“abcd”。要求实现串创建,串输出,串定位
时间: 2024-05-02 18:19:58 浏览: 92
串运算与操作 数据结构
你好!关于你的问题,我可以回答。以下是C语言编写的串匹配算法BF的程序:
```
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
int BF(char *s, char *t);
void get_next(char *t, int *next);
int main() {
char s[MAX_LENGTH], t[MAX_LENGTH];
printf("请输入主串s: ");
scanf("%s", s);
printf("请输入模式串t: ");
scanf("%s", t);
int pos = BF(s, t);
if (pos == -1) {
printf("匹配不成功!\n");
} else {
printf("匹配成功!位序为%d\n", pos);
}
return 0;
}
int BF(char *s, char *t) {
int i = 0, j = 0;
int s_len = strlen(s), t_len = strlen(t);
while (i < s_len && j < t_len) {
if (s[i] == t[j]) {
i++;
j++;
} else {
i = i - j + 1;
j = 0;
}
}
if (j == t_len) {
return i - j;
} else {
return -1;
}
}
```
此程序实现了顺序串的BF模式匹配算法。首先输入主串s和模式串t,然后调用BF函数进行匹配。如果匹配成功,BF函数返回匹配成功的位序;如果匹配不成功,BF函数返回-1。最后根据函数的返回值输出相应信息。
希望我的回答能够帮到你!
阅读全文