/*
*2018.08.29 13:32
*简单模式匹配
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
char *str;
int length;
}String;
int patternMatching( String *pattern, String *sub);
int main(void) {
system("COLOR fc");
putchar('\n');
String pattern = {
"abcdefghij",
10
};
String sub = {
"e9",
2
};
printf("%d", patternMatching(&pattern, &sub));
putchar('\n');
putchar('\n');
system("pause");
return 0;
}
int patternMatching( String *pattern, String *sub) {
//k是在主串中开始比较的位置
int i = 0, j = 0, k = i;
while (i < pattern->length && j < sub->length) {
if (pattern->str[i] == sub->str[j]) {
++i,
++j;
}
else{
j = 0;
i = ++k;
}
}
if (j == sub->length)
return k;
return -1;
}
一般模式匹配算法改进版
最新推荐文章于 2021-07-23 11:06:58 发布