algorithmique (école d'ingénieur) · Chapitre 8 · Exercice de TD
Plus longue sous-chaîne commune
Séquences et chaînes de caractères · niveau 2
Énoncé
Une sous-chaîne est une sous-séquence de symboles contigus.
- On note la longueur du plus long suffixe commun aux - et -préfixes de et . Donner la récurrence de .
- Comment en déduire la longueur et la position d'une plus longue sous-chaîne commune ? Écrire le programme, en .
- L'appliquer à
algorithmiqueetlogarithme.
Corrigé
- Base : . Hérédité : si , le suffixe commun se prolonge, ; sinon aucun suffixe commun non vide, .
- Une sous-chaîne commune est un suffixe commun de deux préfixes : la longueur cherchée est , et si le maximum est atteint en , la sous-chaîne est .
static String sousChaine(String T, String U) {
int m = T.length(), n = U.length(), best = 0, fin = 0;
int[][] Cc = new int[m + 1][n + 1];
for (int p = 1; p < m + 1; p++)
for (int q = 1; q < n + 1; q++) {
Cc[p][q] = (T.charAt(p - 1) == U.charAt(q - 1)) ? 1 + Cc[p - 1][q - 1] : 0;
if (Cc[p][q] > best) { best = Cc[p][q]; fin = p; } // meilleure sous-chaîne vue
}
return T.substring(fin - best, fin);
}
- La plus longue sous-chaîne commune à
algorithmiqueetlogarithmeestrithm, de longueur (leur plsc,lgrithme, de longueur , est plus longue mais n'est pas contiguë).
nom : T
valeurs : a l g o r i t h m i q u e
vert : 4..8
nom : U
valeurs : l o g a r i t h m e
vert : 4..8
legende : rithm, contiguë100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.