BF算法
蛮力算法(Brute-Force),也叫朴素匹配算法,简称BF算法。
算法思想:
从主串s与模式串t的第一个字符进行比较
若相等,则同时后移,对下一个字符进行比较;若不等,则主串回退到之前的下一个字符,模式串回退到第一个字符再次进行比较
直到模式串与主串所有字符序列连续对应相等,则匹配成功,否则匹配失败
图解:
代码实现:
KMP算法
算法思想:
从主串s与模式串t的第一个字符进行比较
若相等,则同时后移,对下一个字符进行比较;若不等,主串不回退,模式串回退,通过找最大前缀和最大后缀相等的个数,确定模式串回退的位置。然后主串从失配点与模式串对应位置进行比较
直到模式串与主串所有字符序列连续对应相等,则匹配成功,否则匹配失败
next[]数组:求每个失配点应该回退的位置,即已匹配部分最大前缀和最大后缀相同的个数
图解:
1.next数组解析
2.KMP算法解析
代码实现:
结果显示(含next数组显示,KMP算法和BF算法运行结果):