字符串为ababaaab,计算next函数值和next Al函数值
时间: 2023-05-24 20:02:57 浏览: 151
首先,要理解next函数和next Al函数的含义。
- next函数表示在模式串中,每个位置之前的子串中,有多长的相同前缀和后缀。例如,对于模式串ababaaab,next函数值为[0, 0, 1, 2, 3, 0, 0, 1],表示第一个字符没有前缀和后缀,第二个字符也没有,第三个字符之前是a,没有重复的前缀或后缀,第四个字符之前是ab,其中b为前缀和后缀,长度为1,第五个字符之前是aba,其中a为前缀和后缀,长度为1,第六个字符之前是abab,其中ab为前缀和后缀,长度为2,第七个字符之前是ababa,其中aba为前缀和后缀,长度为3,第八个字符之前是ababaa,其中aa为前缀和后缀,长度为2,最后一个字符之前是ababaaa,其中aa为前缀和后缀,长度为2。
- next Al函数修改next函数的计算方式,当某个位置计算next函数时,如果其后一个位置的字符与该位置字符相同,则可以直接用后一个位置的next函数值加一作为该位置的next Al函数值。例如,对于模式串ababaaab,next Al函数值为[0, 0, 1, 2, 1, 2, 3, 1],表示第一个字符没有前缀和后缀,第二个字符也没有,第三个字符之前是a,没有重复的前缀或后缀,第四个字符之前是ab,其中b为前缀和后缀,长度为1,第五个字符之前是aba,其中a为前缀和后缀,长度为1,第六个字符之前是abab,其中ab为前缀和后缀,长度为2,第七个字符之前是ababa,其中aba为前缀和后缀,长度为3,第八个字符之前是ababaa,其中aa为前缀和后缀,长度为2,最后一个字符之前是ababaaa,其中aa为前缀和后缀,长度为2。
因此,对于字符串ababaaab,next函数值为[0, 0, 1, 2, 3, 0, 0, 1],next Al函数值为[0, 0, 1, 2, 1, 2, 3, 1]。
阅读全文