Next数组-观察法¶
今天来实验室做数据结构的题,做KMP的时候卡住了,我记得以前李老师教过直接观察法写
Next
数组,但是现在也想不起来了。潘老师也正巧在实验室,然后看到我在弄这个就给我讲了讲,很是感谢潘老师呐。
答案¶
ababaaabab¶
0112342234¶
基本思想¶
求当前元素的Next
值,要看它之前的子串,然后前后缀比较,最大匹配的长度,加一
开始¶
ababaaabab¶
01**********¶
然后,就是求第三位“a
”,看它之前的子串ab
,前后缀没有一样的,所以是0,最后加1,所以是1
ababaaabab¶
011*********¶
然后,就是求第四位“b
”,看它之前的子串aba
,前后缀有一样的,a
和a
,所以是1,最后加1,所以是2
ababaaabab¶
0112********¶
然后,就是求第五位“a
”,看它之前的子串abab
,前后缀有一样的,ab
和ab
,所以是2,最后加1,所以是3
ababaaabab¶
01123*******¶
然后,就是求第六位“a
”,看它之前的子串ababa
,前后缀有一样的,aba
和aba
,所以是3,最后加1,所以是4