C语言编程实现串的匹配模式的BF算法
时间: 2023-09-02 20:11:48 浏览: 143
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[] = "BBC ABCDAB ABCDABCDABDE";
char p[] = "ABCDABD";
int index = BF(s, p);
printf("%d\n", index);
return 0;
}
```
在这个例子中,我们通过函数 `BF()` 来实现字符串匹配功能。参数 `s` 表示主串,参数 `p` 表示模式串。
算法的实现过程中,在匹配过程中,如果当前字符匹配成功,则将两个指针都向后移动一位,否则将主串指针 i 回溯到上次匹配成功的位置的下一位,模式串指针 j 回溯到模式串的开头,重新开始匹配。
阅读全文