Vérificateur d'anagrammes Python
Vérifiez si deux chaînes sont des anagrammes en comparant leurs compositions de caractères en Python.
Aperçu
Deux chaînes sont des anagrammes si elles contiennent les mêmes caractères à des fréquences identiques, bien que disposés dans un ordre différent (par exemple, « écouter » et « silencieux »).
Une manière élégante de vérifier les anagrammes consiste à nettoyer les chaînes (en supprimant les espaces et les minuscules), à trier leurs caractères et à vérifier si les listes triées sont identiques.
Cette approche de tri s'exécute en un temps O(k log k) où k est la longueur de la chaîne, ce qui est optimal pour les vérifications de texte court.
Sortie de code et d'exécution
Vérification des associations de mots pour le statut des anagrammes par tri des lettres.
def is_anagram(str1, str2):
s1 = sorted(str1.lower().replace(" ", ""))
s2 = sorted(str2.lower().replace(" ", ""))
return s1 == s2
word1, word2 = "listen", "silent"
print(f"Are '{word1}' and '{word2}' anagrams? {is_anagram(word1, word2)}")
word3, word4 = "hello", "world"
print(f"Are '{word3}' and '{word4}' anagrams? {is_anagram(word3, word4)}")Are 'listen' and 'silent' anagrams? True
Are 'hello' and 'world' anagrams? FalseMise en œuvre étape par étape
- Moteurs d’analyse de texte et de comparaison linguistique
- Conception de puzzles à cordes et systèmes de validation
- Tâches de codage des entretiens techniques
Foire aux questions
Existe-t-il un moyen de résoudre ce problème en temps linéaire O(n) ?
Oui ! Au lieu de trier, vous pouvez compter les fréquences des lettres à l'aide d'une carte de hachage ou du « collections.Counter » de Python et comparer les cartes de fréquences résultantes.