GCD strings Flashcards
(7 cards)
Que cherche-t-on dans un problème de type “GCD of Strings” ?
On cherche la plus longue chaîne qui peut être répétée plusieurs fois pour former chacune des deux chaînes données.
Quelle est la première vérification à faire avant de calculer quoi que ce soit ?
Vérifier si str1 + str2 == str2 + str1.
Si ce n’est pas le cas, aucun motif commun n’existe.
Pourquoi vérifier str1 + str2 == str2 + str1 ?
Parce que si deux chaînes sont formées par la répétition d’un même motif, leur concaténation dans n’importe quel ordre donne le même résultat.
Comment trouve-t-on la taille du motif commun si la concaténation est valide ?
On prend le PGCD (GCD) des longueurs de str1 et str2.
Le motif commun sera str1[:gcd(len(str1), len(str2))].
Quelle est la formule utilisée pour calculer le PGCD (GCD) ?
On utilise l’algorithme d’Euclide
Quelle est la complexité en temps de cette méthode ?
Calcul du GCD : O(log(min(len(str1), len(str2))))
Concaténations et comparaisons : O(len(str1) + len(str2))
Comment généraliser ce pattern à d’autres problèmes ?
Ce pattern s’applique dès qu’on doit trouver une structure commune en répétition et qu’on peut représenter le problème par la taille (longueur, nombre d’éléments, etc.).