diff --git a/content/strings/Zfunc.h b/content/strings/Zfunc.h index 2b86f37b3..74b320004 100644 --- a/content/strings/Zfunc.h +++ b/content/strings/Zfunc.h @@ -9,13 +9,11 @@ vi Z(const string& S) { vi z(sz(S)); - int l = -1, r = -1; + int l = 0, r = 0; rep(i,1,sz(S)) { - z[i] = i >= r ? 0 : min(r - i, z[i - l]); + z[i] = min(max(r - i, 0), z[i - l]); while (i + z[i] < sz(S) && S[i + z[i]] == S[z[i]]) - z[i]++; - if (i + z[i] > r) - l = i, r = i + z[i]; + z[i]++, l = i, r = i + z[i]; } return z; }