interview

KMP算法

KMP算法解决的问题是字符匹配,这个算法把字符匹配的时间复杂度缩小到O(m+n),而空间复杂度也只有O(m),n是target的长度,m是pattern的长度。

i 0 1 2 3 4 5 6
t[i] A B C D A B D
next[i] -1 0 0 0 0 1 2
i 0 1 2 3 4 5 6
t a b c a b a a
next[j] -1 0 0 0 1 2 1
nextval[j] -1 0 0 -1 0 2 1

在上面的表格中,t[next[4]]=t[4]=b,所以nextval[4]=nextval[next[4]]=0