Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector<int> z_function (string s) {
- int n = (int) s.length();
- vector<int> z (n);
- for (int i=1, l=0, r=0; 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;
- }
- int main(int argc, char** argv)
- {
- string str = "baz";
- int sol = 0;
- for(int i = 0; i< str.size();i++){
- string x = str.substr( 0 , i+1 );
- reverse( x.begin() , x.end() );
- vector<int> z = z_function( x );
- int mx = 0;
- for(int j= 0; j <x.size();j++)
- mx = max( mx , z[j] );
- sol += (i+1) - mx;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement