串ababaaababaa的next和串ababaabab的nextval

这个next求法我看了视频和网上的,发现有两种求法,一种是求最左边和最右边相等的最大个数,

就比如说串ababaaababaa,这个

串ababaaababaa的next和串ababaabab的nextval_第1张图片

所以这个3的位置为1,依次下来。

串ababaaababaa的next和串ababaabab的nextval_第2张图片

这个唯一要注意的是,是按照你选择的前一项的next决定你匹配的个数,就比如说第五号位置

的前一项的4号的next为2,所以先看最前面2个和最左边两个,一看ab 和ab 就匹配了,匹配加一就是第五号的next的值,如果前一项最大匹配匹配不了才看有多少匹配的,就比如说第7号位置的前一项的next是4所以匹配4个,结果一看abab不和abaa匹配,这时就要看最左边和最右边能匹配多少的最左边为a,最右边为a,就匹配的了一个,一个加一就是2了,这个最左边就是第一号位置,最右边就是第七号的前面。你选那个就是那个的前面。

nextval的求法就是按照next求 

串ababaaababaa的next和串ababaabab的nextval_第3张图片

串ababaaababaa的next和串ababaabab的nextval_第4张图片

 

 

 

你可能感兴趣的:(1024程序员节)