KMP和Z算法是用于字符串搜索的众所周知的算法,
KMP算法处理通过KMP失败函数查找模式,该函数定义为(pat是搜索模式)
lps [i] = pat [0..i]的最长适当前缀,也是pat [0..i]的后缀。
例如,用于string "abcab"这将是[0, 0, 0, 1, 2]
其中,Z算法使用z函数定义为:
给定长度为n的字符串S,Z算法将生成一个数组Z,其中Z [i]是从pat [i]开始的最长子字符串的长度,pat [i]也是pat的前缀。
现在的问题是我们可以Z通过使用KMP算法来实现功能吗?我要搜索的是lps数组中的一些修改,这些修改导致与数组相同的结果Z[i]。