KMP算法next
void GetNext(chat* t, int length, int next[])
{
int j, i;
j = 0; i = -1;
next[0] = -1;
while (i < len - 1)
{
if (k==-1 || t[j]==t[i])
{
j++; i++;
next[j]=i;
}
else
{
i=next[i];
}
}
}
初始:
某次循环开始:求?处的值,"abab"是上次求出的"ababab"的最长子串,直接比较 t [ i ]和t [ j ],
若不相同: 按箭头方向缩短,
缩短相同长度,并保证两序列仍然相同,
next [ i ] 保存"abab"的最大的子序列,所以i = next [ i ]
优化:
void GetNext(chat* t, int length, int next[])
{
int j, i;
j = 0; i = -1;
n
KMP算法next最先出现在Python成神之路。
共有 0 条评论