Comprobador de anagramas de Python
Compruebe si dos cadenas son anagramas comparando sus composiciones de caracteres en Python.
Descripción general
Dos cadenas son anagramas si contienen los mismos caracteres en frecuencias idénticas, aunque ordenados en diferente orden (por ejemplo, "escuchar" y "silencio").
Una forma elegante de comprobar los anagramas es limpiar las cadenas (eliminar los espacios en blanco y las minúsculas), ordenar sus caracteres y verificar si las listas ordenadas son idénticas.
Este enfoque de clasificación se ejecuta en un tiempo O(k log k), donde k es la longitud de la cadena, lo cual es óptimo para comprobaciones de texto breves.
Código y salida de ejecución
Comprobación de pares de palabras para conocer el estado de los anagramas mediante clasificación de letras.
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? FalseImplementación paso a paso
- Análisis de texto y motores de comparación lingüística
- Sistemas de validación y diseño de rompecabezas de cuerdas.
- Tareas de codificación de entrevistas técnicas.
Preguntas frecuentes
¿Hay alguna manera de resolver esto en tiempo lineal O (n)?
¡Sí! En lugar de ordenar, puede contar las frecuencias de las letras usando un mapa hash o `collections.Counter` de Python y comparar los mapas de frecuencia resultantes.