数据结构串的next数组
    数据结构串的next数组是在字符串匹配算法中常用的一种辅助数组。它主要用于在模式串与目标串进行匹配时,确定匹配失败时模式串应该移动的位置。
next数组的长度与模式串的长度相同,具体的计算方式如下:
1. 首先,next[0]被定义为-1,表示当第一个字符与目标串不匹配时,模式串应该移动到下一个位置。
2. 然后,依次计算next[i],其中i的范围是1到模式串长度减1。
  a. 假设已经计算出了next[0]到next[i-1]的值。
  b. 针对下标i,首先将next[i]初始化为-1。
  c. 然后,从下标0开始与下标i-1进行比较,到最长的前缀和后缀匹配子串的长度k。
  d. 如果存在这样的子串,则将next[i]设置为k。
3. 最后得到的next数组即为模式串中每个位置匹配失败时应该向前移动的位置。
字符串长度17模式串长度
以模式串"ababc"为例,计算next数组的过程如下:
1. next[0] = -1。
2. 对于next[1],比较模式串的第0个位置和第1个位置的字符"a"和"b",发现不匹配,所以next[1]仍为-1。
3. 对于next[2],比较模式串的第0个位置和第2个位置的字符"a"和"a",发现匹配,所以next[2]为0。
4. 对于next[3],比较模式串的第0个位置和第3个位置的字符"a"和"b",发现不匹配,继续比较第1个位置和倒数第2个位置的字符"b"和"a",发现不匹配,所以next[3]仍为-1。
5. 对于next[4],比较模式串的第0个位置和第4个位置的字符"a"和"c",发现不匹配,继续比较第1个位置和倒数第2个位置的字符"b"和"b",发现匹配,然后比较第2个位置和倒数第3个位置的字符"a"和"a",发现匹配,所以next[4]为2。
因此,对于模式串"ababc",其对应的next数组为[-1, -1, 0, -1, 2]。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。