以下是“C语言朴素模式匹配算法实例代码”的完整攻略。
什么是朴素模式匹配算法?
朴素模式匹配算法是一种简单的字符串匹配算法,它基于蛮力法: 遍历主串中的每个字符,每找到一个位置与模式串的第一个字符匹配,就从后续位置开始一个个比较主串和模式串中的字符是否相同,如果某个字符不匹配,则回到主串中对应的位置重新比较。
朴素模式匹配算法的实现原理
下面是C语言实现朴素模式匹配算法的程序代码执行过程:
- 主函数中定义两个字符数组分别为主串和模式串,并分别输入两串的值;
- 然后在主串中按照顺序比较每一个字符是否与模式串中的第一个字符相等;
- 如果匹配成功,则在主串和模式串中同步移动下一位字符,继续比较下一个字符是否相等;
- 如果匹配失败,则从主串中的下一个字符开始重新比较;
- 如果模式串的第一个字符与主串中的某个字符匹配,并且模式串与主串中的字符全部匹配成功,那么匹配就成功了。
代码实现
下面是朴素模式匹配算法的C语言实现代码示例:
#include <stdio.h>
#include <string.h>
int naive_match(char* str, char* pattern) {
int i, j;
int slen = strlen(str);
int plen = strlen(pattern);
for (i = 0; i <= slen - plen; i++) {
for (j = 0; j < plen; j++) {
if (str[i + j] != pattern[j]) {
break;
}
}
if (j == plen) {
return i;
}
}
return -1;
}
int main() {
char str[] = "hello world";
char pattern[] = "world";
int index = naive_match(str, pattern);
if (index == -1) {
printf("匹配失败");
} else {
printf("匹配成功,匹配位置为:%d", index);
}
return 0;
}
代码示例说明
以上代码通过输入一个字符串和另一个需要匹配的模式串,利用朴素模式匹配算法实现了对目标字符串中特定模式的查找,找到模式串和目标字符串匹配成功后输出匹配位置,如果匹配失败则输出“匹配失败”。
以下是另外一条代码实例:
#include<stdio.h>
#include<string.h>
int naive_match(char* str, char* pattern) {
int i, j;
int slen = strlen(str);
int plen = strlen(pattern);
for (i = 0; i <= slen - plen; i++) {
for (j = 0; j < plen; j++) {
if (str[i + j] != pattern[j]) {
break;
}
}
if (j == plen) {
return i;
}
}
return -1;
}
int main() {
char str[] = "who sees who";
char pattern[] = "who";
int index = naive_match(str, pattern);
if (index == -1) {
printf("匹配失败");
} else {
printf("匹配成功,匹配位置为:%d", index);
}
return 0;
}
以上代码同样通过输入一个字符串和另一个需要匹配的模式串,同样利用朴素模式匹配算法实现了对目标字符串中特定模式的查找,找到模式串和目标字符串匹配成功后输出匹配位置,如果匹配失败则输出“匹配失败”。
以上就是朴素模式匹配算法的完整攻略,希望可以对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言朴素模式匹配算法实例代码 - Python技术站