GCD strings Flashcards

(7 cards)

1
Q

Que cherche-t-on dans un problème de type “GCD of Strings” ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quelle est la première vérification à faire avant de calculer quoi que ce soit ?

A

Vérifier si str1 + str2 == str2 + str1.
Si ce n’est pas le cas, aucun motif commun n’existe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Pourquoi vérifier str1 + str2 == str2 + str1 ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Comment trouve-t-on la taille du motif commun si la concaténation est valide ?

A

On prend le PGCD (GCD) des longueurs de str1 et str2.
Le motif commun sera str1[:gcd(len(str1), len(str2))].

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quelle est la formule utilisée pour calculer le PGCD (GCD) ?

A

On utilise l’algorithme d’Euclide

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quelle est la complexité en temps de cette méthode ?

A

Calcul du GCD : O(log(min(len(str1), len(str2))))

Concaténations et comparaisons : O(len(str1) + len(str2))

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Comment généraliser ce pattern à d’autres problèmes ?

A

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.).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly