BF算法:
BF算法的实现思想:我们可以定义两个索引值i和j,分别指示主串str和子串sub当前正待比较的字符位置,从主串str的第pos个字符起和子串sub的第一个字符比较,若相等,则i++,j++,否则从主串str回到上次匹配开始的下一个位置即i-j+1,子串回到0号位置,重复执行,直到子串sub中的每个字符依次和主串str中的一个连续字符串相等,则匹配成功,函数返回该连续字符串的第一个字符在主串str中的位置,否则匹配不成功,函数返回-1。
代码实现:
int BF(const char *str,const char *sub,int pos)//pos为主串位置
{
assert(str != NULL&& sub!=NULL);
int i = pos;
int j = 0;
int lens = strlen(str);
int lensub = strlen(sub);
while (j <

本文介绍了两种字符串匹配算法:BF算法和KMP算法。BF算法在最坏情况下的时间复杂度为O(Plen*Tlen),而KMP算法通过next数组避免回溯,达到O(Plen+Tlen)的时间复杂度,空间复杂度为O(Plen)。KMP算法的关键在于next数组的计算,用于确定模式串在不匹配时的滑动距离。
最低0.47元/天 解锁文章
2304

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



