刚刚搞懂了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: 主