查找朋友怎么看不见位置 都是方块 怎么回事啊!

 其核心思想是:在匹配过程中當发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配从而提高匹配速度。

当匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符如果该字符没有在模式串中出现则直接跳过,

移动步长=模式串的长度+1;否则移动步长=模式串中最右端的字符到末尾嘚距离+1.

说明Sunday算法的运行过程进行了12次匹配

Sunday 算法的匹配策略是:先匹配,发生失配时再转移

而匹配次数越多则执行效率越低那能不能先轉移后匹配呢?答案是肯定的

这就是Sunday算法的优化。算法在匹配前先检验模式串的最后一个字符位置在文本串中对应的位置的字符是否在模式串中出现如果没有则从该字符的下一位进行下一轮循环,移动步长=模式串长度这样避免了匹配,提高了执行速度

这里用Sunday算法的優化运行上面的例子,只匹配了6次

 
 
该算法对统计文本串中模式串的个数问题没有优势复杂度甚至会退化到O(n*m)
还是KMP大法好!!!!

我要回帖

 

随机推荐