#include <string.h>
#include <stdlib.h>
#include <stdio.h>
void computeLPSArray(char* pat, int M, int* lps) {
int i = 1,len = 0;
while (i < M) {
if (pat[i] == pat[len]) lps[i++] = ++len;
else {
if (len != 0) len = lps[len - 1];
else lps[i++] = 0;
}
}
}
int main() {
char pat[] = "ABABAA";
int M = strlen(pat);
int* lps =(int*)calloc(M,sizeof(int));
computeLPSArray(pat,M,lps);
for(int i=0;i<M;i++) printf("%d ",lps[i]);
return 0;
}