Bootstrap

DS串应用 KMP算法

刚刚搞懂了KMP,输出一下

把长的叫主串,短的叫模式串

KMP,查找字符串的算法,适用于模式串中有重复子串的情况,便于缩短时间

传统暴力解法是模式串一次一次右移,直到对上

主串 Mstr ,模式串 mstr

KMP 主要是 next数组

用一个next数组存储  当模式串中每一个位置失效时对应的next【j】

 kmp其实就是找出已配对成功的部分中的  首尾重复内容来 移动

所以如果尾部的部分不能和前面的部分重叠,

即 mstr【j】 !=mstr【next【j】】,就缩短距离,从前面mstr【0】到mstr【next【j】】的部分再找

找到从str【0】开始的能和 尾部部分重叠的部分,然后获取下标,代替尾部

要是都没有,那就从str【0】开始比较

 

KMP应用

当模式串中某位置 mstr【j】与主串 Mstr【j】不相等时时,对应主串中的位置 Mstr【i】应重新和模式串的 mstr【next【j】】去比较,这样就可以滑动节省时间,特别是模式串长的时候;

eg:  主 

;