跳转至

Next数组-观察法

今天来实验室做数据结构的题,做KMP的时候卡住了,我记得以前李老师教过直接观察法写Next数组,但是现在也想不起来了。潘老师也正巧在实验室,然后看到我在弄这个就给我讲了讲,很是感谢潘老师呐。

答案

ababaaabab

0112342234

基本思想

求当前元素的Next值,要看它之前的子串,然后前后缀比较,最大匹配的长度,加一

开始

ababaaabab

01**********

然后,就是求第三位“a”,看它之前的子串ab,前后缀没有一样的,所以是0,最后加1,所以是1

ababaaabab

011*********

然后,就是求第四位“b”,看它之前的子串aba,前后缀有一样的,aa,所以是1,最后加1,所以是2

ababaaabab

0112********

然后,就是求第五位“a”,看它之前的子串abab,前后缀有一样的,abab,所以是2,最后加1,所以是3

ababaaabab

01123*******

然后,就是求第六位“a”,看它之前的子串ababa,前后缀有一样的,abaaba,所以是3,最后加1,所以是4

ababaaabab

011234******

以此类推……