字符串

Z函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vector<int> z_function(string s) {
int n = (int)s.length();
vector<int> z(n);
for (int i = 1, l = 0, r = 0; i < n; ++i) {
if (i <= r && z[i - l] < r - i + 1) {
z[i] = z[i - l];
} else {
z[i] = max(0, r - i + 1);
while (i + z[i] < n && s[z[i]] == s[i + z[i]]) ++z[i];
}
if (i + z[i] - 1 > r) l = i, r = i + z[i] - 1;
}
return z;
}

字符串
https://brtulien.github.io/2024/02/04/字符串/
作者
Brtulien
发布于
2024年2月4日
更新于
2024年7月1日
许可协议