Comprobador de anagramas de Python

Compruebe si dos cadenas son anagramas comparando sus composiciones de caracteres en Python.

Pruébelo en el editor

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

Implementació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.

Temas relacionados