// bon-prefixe.c
// << Algorithmique du texte >>
// Maxime Crochemore, Christophe Hancart et Thierry Lecroq
// Vuibert, 2001.
#include <stdio.h>
#include "chl.h"
int *bonPrefixe(Mot x, Longueur m) {
int i, j, *bonPref;
bonPref = (int *)malloc((m + 1)*sizeof(int));
if (bonPref == NULL) error("bonPrefixes");
bonPref[0] = -1;
i = 0;
for (j = 1; j <= m - 1; ++j) {
// Ici, x[0..i - 1] = Bord(x[0..j - 1])
bonPref[j] = i;
while (i >= 0 && x[j] != x[i])
i = bonPref[i];
++i;
}
bonPref[m] = i;
return(bonPref);
}