Controllo anagrammi Python

Controlla se due stringhe sono anagrammi confrontando le loro composizioni di caratteri in Python.

Prova nell'editor

Panoramica

Due stringhe sono anagrammi se contengono gli stessi caratteri nelle identiche frequenze, anche se disposti in un ordine diverso (ad esempio, "ascolta" e "silenzio").

Un modo elegante per verificare la presenza di anagrammi è pulire le stringhe (rimuovere gli spazi bianchi e le lettere minuscole), ordinare i caratteri e verificare se gli elenchi ordinati sono identici.

Questo approccio di ordinamento viene eseguito in tempo O(k log k) dove k è la lunghezza della stringa, che è ottimale per controlli di testo brevi.

Codice e output di esecuzione

Controllo degli accoppiamenti di parole per lo stato dell'anagramma mediante l'ordinamento delle lettere.

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

Implementazione passo dopo passo

  • Motori di analisi del testo e di confronto linguistico
  • Sistemi di progettazione e validazione di puzzle di stringhe
  • Attività di codifica del colloquio tecnico

Domande frequenti

C'è un modo per risolverlo nel tempo lineare O(n)?

Sì! Invece di ordinare, puoi contare le frequenze delle lettere utilizzando una mappa hash o `collections.Counter` di Python e confrontare le mappe di frequenza risultanti.

Argomenti correlati