拓展(ex-ten-sion):范围或操作的扩大。
——韦氏词典
拓展 KMP,又称 Z 函数,他解决了这样一个问题:定义为以作为开头的后缀和原串的最长公共前缀(LCP)的长度。例如:原串是"abacaba"时,它的
这个问题朴素的做法显然是的(枚举开头,一一比对)。
vector<int> z_function_trivial(string s) {
int n = (int)s.length();
vector<int> z(n);
for (int i = 1; i < n; ++i)
while (i + z[i] < n && s[z[i]] == s[i + z[i]]) ++z[i];
return z;
}
2023/8/26大约 12 分钟