/*
*2018.08.29 13:32
*简单模式匹配
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
char *str;
int length;
}String;
int patternMatching(const String const *pattern, const String const *sub);
int main(void) {
system("COLOR fc");
putchar('\n');
String pattern = {
"abcdefghij",
10
};
String sub = {
"bc",
2
};
printf("%d", patternMatching(&pattern, &sub));
putchar('\n');
putchar('\n');
system("pause");
return 0;
}
int patternMatching(const String const *pattern, const String const *sub) {
if (pattern->length < sub->length || 0 == pattern->length || 0 == sub->length)
return -1;
size_t i, j;
for (i = 0; i <= pattern->length - sub->length; i++){
for (j = 0; j < sub->length; j++){
if (pattern->str[i + j] != sub->str[j])
break;
}
if (j == sub->length)
//匹配成功时,返回主串中成功匹配的第一个下标
return i;
}
return -1;
}
一般模式匹配算法
最新推荐文章于 2025-03-06 14:59:28 发布