Advertisement
keverman

Z algorithm

Feb 6th, 2020
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.36 KB | None | 0 0
  1. vector<int> z_function(string s)
  2. {
  3.     vector<int> z(s.size(), 0);
  4.     for(int i = 1, l = 0, r = 0; i < s.size(); i++)
  5.     {
  6.         if(i <= r)
  7.             z[i] = min(r - i + 1, z[i - l]);
  8.         while(i + z[i] < s.size() && s[z[i]] == s[i + z[i]])
  9.             z[i]++;
  10.         if(i + z[i] >= r)
  11.             l = i, r = i + z[i] - 1;
  12.     }
  13.     return z;
  14. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement