Exercices Algorithmes Plus longue sous-sequence commune (LCS)
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Plus longue sous-sequence commune (LCS)

La LCS (Longest Common Subsequence) est un problème fondamental en informatique. On l'utilise par exemple pour comparer des fichiers (comme git diff) ou des sequences ADN.

Une sous-sequence, ce n'est pas la meme chose qu'une sous-chaine. Les caracteres n'ont pas besoin d'etre contigus, juste dans le meme ordre. Par exemple, dans 'ABCDE', 'ACE' est une sous-sequence (on a garde A, C, E dans l'ordre).

On construit une matrice dp ou dp[i][j] contient la longueur de la LCS entre les i premiers caracteres de s1 et les j premiers de s2.

Si les caracteres courants sont egaux, on etend la LCS précédente de 1. Sinon, on prend le meilleur des deux sous-problèmes.

Exemples :
lcs('ABCBDAB', 'BDCAB') renvoie 4 (par exemple BCAB)
lcs('abc', 'abc') renvoie 3
lcs('abc', 'xyz') renvoie 0

Écris une fonction lcs(s1, s2) qui retourne la longueur de la plus longue sous-sequence commune.

Tests (2/4)

Exemple classique
assert lcs('ABCBDAB', 'BDCAB') == 4
Chaines identiques
assert lcs('abc', 'abc') == 3

+ 0 tests cachés

Indices (3 disponibles)

solution.py