C语言代码用BF算法实现模式串匹配,使用定长顺序存储,返回模式串在目标串中的位置,目标串:abcabebfschaglwke,模式串:bfscha
时间: 2024-10-27 10:06:38 浏览: 36
串的定长顺序存储表示-数据结构课件第四章-串
在C语言中,我们可以使用Brute Force (BF) 算法,也称为朴素匹配,来实现模式串在目标串中的查找。这种算法适用于短模式串,因为对于每个位置,它都会逐个字符地检查模式串是否匹配目标串的当前部分。
以下是使用定长顺序存储(即简单遍历)的BF算法实现:
```c
#include <stdio.h>
#include <string.h>
int bf_search(char* target, char* pattern) {
int len_t = strlen(target);
int len_p = strlen(pattern);
for (int i = 0; i <= len_t - len_p; ++i) {
int match = 1;
for (int j = 0; j < len_p; ++j) {
if (target[i + j] != pattern[j]) {
match = 0;
break;
}
}
if (match) {
return i;
}
}
// 如果没有找到匹配,返回 -1 或者某个合理的位置表示未找到
return -1;
}
int main() {
char target[] = "abcabebfschaglwke";
char pattern[] = "bfscha";
int position = bf_search(target, pattern);
if (position != -1) {
printf("Pattern found at index %d in the target string.\n", position);
} else {
printf("Pattern not found in the target string.\n");
}
return 0;
}
```
在这个例子中,我们从头开始在`target`中滑动模式串`pattern`,每次比较一次。如果所有字符都匹配,就找到了匹配位置,否则继续下一个位置直到结束。
阅读全文