《表1 BF算法:浅析KMP算法中next数组值计算》
传统的next数组使用递推的思想,对于模式串T,且已知next[j]=k即T0Tk-1”=“Tj-kTj-1”时,next[j+1]=next[j]+1=k+1,但T0Tk-1Tk”≠“Tj-kTj-1Tj”。换言之,当Tk!=Tj时,有长度为k+1的相同前缀后缀,不能再简单的令:next[j+1]=next[j]+1,这时若能在前缀“T0Tk-1Tk”中不断的递归k=next[k],找到一个字符Tk’使得Tk’=Tj,且满足T0Tk'-1Tk'=Tj-k'Tj-1Tj,从而next[j+1]=k’+1=next[k']+1,否则next[j+1]=0。运用这个思想对字符串“edeedee”求出的next数组值为0,1,1,2,2,3,4从描述过程不难看出其抽象难懂,极易造成错误的结果。
图表编号 | XD0058005100 严禁用于非法目的 |
---|---|
绘制时间 | 2019.03.25 |
作者 | 姚秀情 |
绘制单位 | 阳光学院信息工程学院 |
更多格式 | 高清、无水印(增值服务) |