Advertisement
Manioc

zfunk

Jul 1st, 2018
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.33 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define MAX 100007
  3.  
  4. using namespace std;
  5.  
  6. int z[MAX];
  7.  
  8. void func(string s){
  9.     int l = 0, r = 0;
  10.     for(int i = 1; i < s.size(); i++){
  11.         z[i] = max(0, min(z[i-l], r-i+1));
  12.         while(i+z[i] < s.size() && s[z[i]] == s[i+z[i]]){
  13.             l = i; r = i+z[i]; z[i]++;
  14.         }
  15.     }
  16. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement