dos palabras se dice que son anagramas si tienen los exactas mismas letras, exactamente el mismo número de veces.
El cheque por anagrama es ordenar las letras de las palabras y comprobar la igualdad:
sort_letters(word1) == sort_letters(word2)
ahora para encontrar todos los anagramas de una palabra del diccionario dada decir word1
, que iba a encontrar todas las palabras el diccionario para el cual se sostiene la prueba anterior. Para optimizar la búsqueda solo podemos buscar palabras que sean de misma longitud.
Si tenemos que hacer esto en varias ocasiones que es mejor hacer un poco de pre-procesamiento . Podemos construir algo así como HashMap
, donde en el mapa un string
a un conjunto de strings
que son anagramas. Algo así como:
Bad ==> Dab
Cat ==> Act, Tac
.....
Ahora da ninguna palabra que puedo mirar hacia el hashMap
para obtener todos sus anagramas.
google para "lista de palabras" y encontrará muchas listas de palabras en inglés. – Amber