作用:就是在一个长字符串中找有没有这个子串的算法
基本思路:从子串的最后一个字符开始对比
先将t跟s进行比较,不匹配,s就叫做坏字符,直接移动4个位置
将t跟t进行比较,匹配,再将x跟a进行比较,不匹配
t就叫做“好后缀”,而a就叫做坏字符,将其移动
坏字符的当前位置-坏字符在子串中出现的位置个字符(我是以1开始算字符串的长度的,比较好记)但是你写代码时记得把我写的数字都减一个1,因为下标是以0开始
如果坏字符不在子串中就将其当成0来算
这里也就是移动3-0=3个位置
将t与x进行比较,不匹配,x是坏字符,将其移动4-3=1个位置
这时你会发现如果你用坏字符的公式得出的结果为-1,难道你还要退回去走不行,所以这时你就需要用到另一个公式
后移位数 = 好后缀的位置 (以”好后缀”的最后一个字符为准)– 模式串中的上一
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交