CP-templates

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub Misuki743/CP-templates

:heavy_check_mark: string/zFunc.cpp

Verified with

Code

template<class T>
vector<int> zFunc(T &s) {
  vector<int> z(ssize(s));
  z[0] = ssize(s);
  for(int i = 1, l = 0, r = -1; i < ssize(s); i++) {
    if (i <= r)
      z[i] = min(r - i + 1, z[i - l]);
    while(i + z[i] < ssize(s) and s[i + z[i]] == s[z[i]])
      l = i, r = i + z[i], z[i] += 1;
  }
  return z;
}
#line 1 "string/zFunc.cpp"
template<class T>
vector<int> zFunc(T &s) {
  vector<int> z(ssize(s));
  z[0] = ssize(s);
  for(int i = 1, l = 0, r = -1; i < ssize(s); i++) {
    if (i <= r)
      z[i] = min(r - i + 1, z[i - l]);
    while(i + z[i] < ssize(s) and s[i + z[i]] == s[z[i]])
      l = i, r = i + z[i], z[i] += 1;
  }
  return z;
}
Back to top page