1:原始暴力算法
每次移动一下,然后重新从头开始对应
缺陷: 比较次数过多
示例 1:a,a,a,a,a,a,a,b
2:a,a,a,a,b
2:kmp算法
找前缀表:及计算前缀和后缀最大相同数。
然后对比:从失败处,根据前缀3,找到了第4个a处,使得p[3]与失败处对应,然后用p[3]与此处的值做对比。(与暴力算法比,虽然都只移动了1位,但对比的开始下标不同)。(非常巧妙,大家可以思考下)。
从匹配失误的下表开始匹配
1:原始暴力算法
每次移动一下,然后重新从头开始对应
缺陷: 比较次数过多
示例 1:a,a,a,a,a,a,a,b
2:a,a,a,a,b
2:kmp算法
找前缀表:及计算前缀和后缀最大相同数。
然后对比:从失败处,根据前缀3,找到了第4个a处,使得p[3]与失败处对应,然后用p[3]与此处的值做对比。(与暴力算法比,虽然都只移动了1位,但对比的开始下标不同)。(非常巧妙,大家可以思考下)。
从匹配失误的下表开始匹配