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