Controllo anagrammi Python
Controlla se due stringhe sono anagrammi confrontando le loro composizioni di caratteri in Python.
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)}")Are 'listen' and 'silent' anagrams? True
Are 'hello' and 'world' anagrams? FalseImplementazione 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.