C语言实现蛮力字符串匹配 【输入形式】文本串和模式串(分开输入) 【输出形式】匹配成功,输出模式首字符对应文本的字符下标(从0开始);失败输出-1 同时输出字符比较次数 【样例输入】0001000000(文本) 100(模式) 【样例输出】3 6 (成功案例: 即匹配位置与比较次数,中间用空格隔开)
时间: 2024-02-17 16:02:49 浏览: 16
好的,以下是C语言实现蛮力字符串匹配的代码,同样包括比较次数的计数:
```c
#include <stdio.h>
#include <string.h>
int brute_force_match(char text[], char pattern[]) {
int n = strlen(text);
int m = strlen(pattern);
int count = 0;
for (int i = 0; i <= n - m; i++) { // 在文本串中逐个比较子串
int j = 0;
while (j < m && text[i+j] == pattern[j]) {
j++;
count++;
}
if (j == m) { // 匹配成功
return i;
}
}
printf("%d ", count); // 输出比较次数
return -1; // 匹配失败
}
int main() {
char text[1000], pattern[1000];
scanf("%s %s", text, pattern);
int pos = brute_force_match(text, pattern);
if (pos == -1) {
printf("-1\n");
} else {
printf("%d %d\n", pos, pos+strlen(pattern)-1);
}
return 0;
}
```
在main函数中,我们先定义一个大小为1000的字符数组,用于存储输入的文本串和模式串。然后,调用brute_force_match函数进行字符串匹配,并接收返回值pos,表示匹配成功的起始位置。如果pos为-1,说明匹配失败,直接输出-1即可;否则,输出匹配成功的起始位置pos和结束位置pos+strlen(pattern)-1。
注意,由于C语言中字符串是以'\0'结尾的字符数组,因此在计算结束位置时,需要加上字符串长度-1。
希望这个代码对您有所帮助!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)