vector<ll> Z(const string& s) {
ll n = s.size();
vector<ll> z(n);
z[0] = n;
ll l = 0, r = 0;
for (ll i = 1; i < n; i++) {
if (i <= r) {
z[i] = min(r - i + 1, z[i - l]);
}
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;
}
c++ Z函数的实现
最新推荐文章于 2024-10-10 22:59:02 发布