void get_next( String T, int *next)
{
j=0; //j是前缀
i=1; //i是后缀
next[1]=0;
while( i < T[0] )
{
if( j=0 || T[i] == T[j] )
{
i++;
j++;
next[i] = j;
}
else
{
j = next[j];
}
}
}
T | 8 | a | b | a | b | a | a | a | b |
下标 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
next | x | 0 | 1 | 1 | 2 | 3 | 4 | 2 | 2 |
i(后缀) = 1 2 。 3 4 5 6 7 。 8
j(前缀) = 0 1 0 1 2 3 4 2 1 2