一、后缀蛮力匹配算法
后缀匹配是指模式串的比较从右到左,模式串的移动也是从左到右的匹配过程,经典的BM算法其实是对后缀蛮力匹配算法的改进。后缀蛮力匹配算法是最简单的一个。
代码样例:
-
static int suffix(const char *src, const char *des)
-
{
-
int i, pos;
-
int len_s, len_d;
-
-
if(src == NULL || des == NULL)
-
return -1;
-
-
len_s = strlen(src);
-
len_d = strlen(des);
-
-
for(pos = 0; pos <= len_s - len_d; pos++) {
-
for(i = pos+len_d-1; i - pos > 0; i--) {
-
if(src[i] != des[i - pos])
-
break;
-
}
-
-
if((i - pos) == 0)
-
return pos;
-
}
-
-
return -1;
-
}
二、BM算法
BM算法所做的唯一的事情就是改进了以上代码中模式串每次移动一步的状况,而是根据已经匹配的后缀信息移动更多的距离。
阅读(2160) | 评论(0) | 转发(0) |