C++:bf算法实现串匹配问题
时间: 2023-10-20 16:25:05 浏览: 163
BF(Brute-Force)算法,也称朴素算法,是一种简单直观的字符串匹配算法。它的思想是从主串的第一个字符开始和模式串逐个字符进行比较,如果匹配成功,则继续比较下一个字符,否则从主串的下一个字符开始重新匹配。
以下是C语言实现BF算法的代码:
```c
#include <stdio.h>
#include <string.h>
int BF(char* s, char* p)
{
int i = 0, j = 0;
int slen = strlen(s);
int plen = strlen(p);
while (i < slen && j < plen)
{
if (s[i] == p[j])
{
i++;
j++;
}
else
{
i = i - j + 1;
j = 0;
}
}
if (j == plen)
return i - j;
else
return -1;
}
int main()
{
char s[100], p[100];
printf("请输入主串:");
scanf("%s", s);
printf("请输入模式串:");
scanf("%s", p);
int pos = BF(s, p);
if (pos == -1)
printf("未匹配成功!\n");
else
printf("匹配成功,位置为:%d\n", pos);
return 0;
}
```
在程序中,BF函数的参数为主串s和模式串p,返回值为模式串在主串中的位置。程序首先获取主串和模式串的输入,然后调用BF函数进行匹配。BF函数通过两个指针i和j来遍历主串和模式串,如果当前字符匹配成功,则两个指针都向后移动一位,否则主串的指针i向后移动一位,模式串的指针j回到起始位置重新开始匹配。当模式串的指针j遍历完整个模式串时,表示匹配成功,返回模式串在主串中的位置;否则返回-1表示匹配失败。
以上就是C语言实现BF算法的代码。
阅读全文