Dado un conjunto de palabras, necesitamos encontrar las palabras del anagrama y mostrar cada categoría sola usando el mejor algoritmo.Algoritmo para agrupar palabras de anagrama
de entrada:
man car kile arc none like
de salida:
man
car arc
kile like
none
La mejor solución que estoy desarrollando ahora se basa en una tabla hash, pero estoy pensando en la ecuación para convertir la palabra en anagrama valor entero.
Ejemplo: man => 'm' + 'a' + 'n' pero esto no dará valores únicos.
¿Alguna sugerencia?
Ver siguiente código en C#:
string line = Console.ReadLine();
string []words=line.Split(' ');
int[] numbers = GetUniqueInts(words);
for (int i = 0; i < words.Length; i++)
{
if (table.ContainsKey(numbers[i]))
{
table[numbers[i]] = table[numbers[i]].Append(words[i]);
}
else
{
table.Add(numbers[i],new StringBuilder(words[i]));
}
}
El problema es cómo desarrollar GetUniqueInts(string [])
método.
¿Desea una función hash que devuelve el mismo hash para combinaciones de las mismas letras en diferentes órdenes, con un hash único para cada combinación de letras (sin coincidencias falsas)? – Sparr