Vérificateur d'anagrammes Python

Vérifiez si deux chaînes sont des anagrammes en comparant leurs compositions de caractères en Python.

Essayez dans l'éditeur

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)}")
Sortie terminale
Are 'listen' and 'silent' anagrams? True
Are 'hello' and 'world' anagrams? False

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

Sujets connexes