Introducción
Un anagrama es una palabra o frase formada al reordenar las letras de una palabra o frase diferente. Por ejemplo, "listen" es un anagrama de "silent". En este desafío, se te pedirá escribir una función que compruebe si dos cadenas son anagramas una de la otra.
Anagrama de cadenas
Escribe una función is_anagram(s1, s2) que tome dos cadenas como argumentos y devuelva True si son anagramas una de la otra, y False en caso contrario. La función debe ser insensible a mayúsculas y minúsculas, ignorar espacios, signos de puntuación y caracteres especiales.
Para resolver este problema, puedes seguir estos pasos:
- Utiliza
str.isalnum()para filtrar los caracteres no alfanuméricos ystr.lower()para transformar cada carácter a minúsculas. - Utiliza
collections.Counterpara contar los caracteres resultantes de cada cadena y comparar los resultados.
from collections import Counter
def is_anagram(s1, s2):
return Counter(
c.lower() for c in s1 if c.isalnum()
) == Counter(
c.lower() for c in s2 if c.isalnum()
)
is_anagram('#anagram', 'Nag a ram!') ## True
Resumen
En este desafío, has aprendido cómo comprobar si dos cadenas son anagramas una de la otra. Has utilizado str.isalnum() para filtrar los caracteres no alfanuméricos, str.lower() para transformar cada carácter a minúsculas y collections.Counter para contar los caracteres resultantes de cada cadena y comparar los resultados.