此算法并不难 但是每次做DS的题时老是会忘 然后浪费半小时 所以记录一下这次思考的过程
一 求next数组
默认
next[0]=-1 next[1]=0 (因为是从0开始到k-1 其中k<j j为目标串下标 i为那个主串的位序)
然后就根据上面那个next[j]从j=2开始算出next数组
之后就进行计算
j==-1 或比较成功时 i++ j++
其他情况 j=next[j] i不变
二
若有S=aaabaaaab P=aaaab则会比较很多次
这时候就需要nextval数组
然后将nextval当作上一题的next数组求解就行了