《数据结构(C语言版)》上给出了两种模式匹配算法,BF算法和KMP算法。
存在一个主串S和一个模式T,要在主串S中查找与模式T相匹配的子串。
BF算法
操作步骤:
1. 分别利用计数指针i和 j 指示主串和模式T中当前正待比较的字符位置, i初值为 pos ,j 初值为 1;
如果两个串均未比较到串 尾,即i 和j 均分别小于等于S和T的长度时,则循环执行以下操作:
·S.ch[i]和T.ch[j]比较,若相等,则i和j分别指向串中的下个位置,继续比较后续字符;
· 若不等,指针后退重新开始匹配,从主串的下一个字符(i = i - j+2)起再重新和模式的第一个字符(j = 1)比较;如果
j >T.length,说明匹配成功,返回和模式T中第一个字符相等的字符在主串S中的序号(i - T.length);否则不成功,返回 0。
int index_BF(SqString s,SqString t,int pos)
{
i = pos;j=1;
while (i<s.length && j<t.

本文介绍了《数据结构(C语言版)》中的两种模式匹配算法:BF算法和KMP算法。BF算法通过逐个字符比较进行匹配,效率较低。而KMP算法通过预处理模式串,计算next数组来避免不必要的回退,提高了匹配效率。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



