KMP算法分析

2.next数组求法

操作见课件,这里不赘述

1. s [ i ] ≠ s [ j ] s[i] \neq s[j] s[i]=s[j]


s [ i ] s[i] s[i] s [ j ] s[j] s[j] 无法匹配,所以我们一定无法选择 s [ j ] s[j] s[j] n e x t [ i ] = 1 next[i] = 1 next[i]=1, 所以最长公共前后缀长度为:一段包含 s [ i ] s[i] s[i]的区间和一段不包含 s [ j ] s[j] s[j]的区间,且两区间相同, n e x t [ j ] next[j] next[j]表示先将不包含 s [ i ] s[i] s[i]的区间匹配,在去暴力的判断能不能再加上一个字符 s [ i ] s[i] s[i]

2. s [ i ] = = s [ j ] s[i] == s[j] s[i]==s[j]

则最长公共前后缀可以向后延展一位,所以直接 i i i++; j j j++;

posted @ 2020-11-14 09:52  C2022lihan  阅读(26)  评论(0编辑  收藏  举报