Exercice 106
Écrire une fonction en Python qui prend deux chaînes de caractères en entrée et détermine si elles sont des anagrammes l'une de l'autre (elles contiennent les mêmes caractères, mais pas nécessairement dans le même ordre).
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
def sont_anagrammes(chaine1, chaine2): # Supprimer les espaces et mettre toutes les lettres en minuscules pour la comparaison chaine1 = chaine1.replace(" ", "").lower() chaine2 = chaine2.replace(" ", "").lower() # Vérifier si les deux chaînes ont la même longueur if len(chaine1) != len(chaine2): return False # Utiliser un dictionnaire pour compter les occurrences de chaque caractère dans les deux chaînes occurrences = {} # Compter les caractères de la première chaîne for char in chaine1: if char in occurrences: occurrences[char] += 1 else: occurrences[char] = 1 # Soustraire les occurrences des caractères de la deuxième chaîne for char in chaine2: if char in occurrences: occurrences[char] -= 1 else: return False # Un caractère de la deuxième chaîne n'est pas présent dans la première # Vérifier que toutes les occurrences sont nulles return all(count == 0 for count in occurrences.values()) # Exemple d'utilisation chaine1 = "nectar" chaine2 = "carnet" if sont_anagrammes(chaine1, chaine2): print(f"{chaine1} et {chaine2} sont des anagrammes.") else: print(f"{chaine1} et {chaine2} ne sont pas des anagrammes.") # output: nectar et carnet sont des anagrammes. |
Younes Derfoufi
CRMEF OUJDA