MCPcopy Create free account
hub / github.com/Jonathan-Uy/CSES-Solutions / main

Function main

String Algorithms/String Functions.cpp:9–29  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7int N, z[maxN], pi[maxN];
8
9int main(){
10 scanf(" %s", S);
11 N = (int) strlen(S);
12
13 for(int i = 1, l = 0, r = 0; i < N; i++){
14 if(i <= r) z[i] = min(r-i+1, z[i-l]);
15 while(i+z[i] < N && S[z[i]] == S[i+z[i]]) z[i]++;
16 if(i+z[i]-1 > r) l = i, r = i+z[i]-1;
17 }
18 for(int i = 0; i < N; i++)
19 printf("%d%c", z[i], (" \n")[i==N-1]);
20
21 for(int i = 1; i < N; i++){
22 int j = pi[i-1];
23 while(j > 0 && S[i] != S[j]) j = pi[j-1];
24 if(S[i] == S[j]) j++;
25 pi[i] = j;
26 }
27 for(int i = 0; i < N; i++)
28 printf("%d%c", pi[i], (" \n")[i==N-1]);
29}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected