Adloun

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 à algorithmique et logarithme.

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 à algorithmique et logarithme est rithm, 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

Exercice suivant et tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →