三九宝宝网宝宝成长宝宝手工

next数组的手工怎么求

01月07日 编辑 39baobao.com

对于T串,next[i]的值是T[1...i]的真后缀同时是T[1..i]前缀的最大字串的长度

比如

ab ->没有,所以为0

aa ->a,1

aba->a,1

abab->ab,2

acbcaacb->acb,3

所以对于串abcaababc

index 1 = T[1..1] = a ->始终为0

index 2 = T[1..2] = ab ->0

index 3 = T[1..3] = abc ->0

index 4 = T[1..4] = abca ->a,1

index 5 = T[1..5] = abcaa ->a,1

index 6 = T[1..6] = abcaab ->ab,2

index 7 = T[1..7] = abcaaba ->a,1

index 8 = T[1..8] = abcaabab ->ab,2

index 9 = T[1..9] = abcaababc ->abc,3

逗号之前的是最大真后缀同时也是前缀的串

所以求出来的数组就是0 0 0 1 1 2 1 2 3

第一个值可以是0或-1,看你的具体实现是什么

推荐阅读
图文推荐