Dada una serie de palabras, imprimir todos los anagramas juntos? Ejemplos:
Input : arr = ['cat', 'dog', 'tac', 'god', 'act'] Output : 'cat tac act dog god'
Este problema tiene una solución existente, consulte Anagramas y Dada una secuencia de palabras, imprima todos los anagramas juntos . Resolveremos este problema en python usando estructuras de datos List y Dictionary . El enfoque es muy simple:
- Recorrer la lista de strings.
- Ordene cada string en orden ascendente y considere este valor ordenado como Clave y el valor original como Valor de la clave correspondiente. Verifique si la clave no está presente en el diccionario, lo que significa que está ocurriendo por primera vez, así que asigne una lista vacía a Clave y agregue el valor en ella, si la clave ya está presente, simplemente agregue el valor.
- Ahora cada tecla contendrá una lista de strings que son anagramas juntas.
Implementación:
Python3
# Function to return all anagrams together def allAnagram(input): # empty dictionary which holds subsets # of all anagrams together dict = {} # traverse list of strings for strVal in input: # sorted(iterable) method accepts any # iterable and returns list of items # in ascending order key = ''.join(sorted(strVal)) # now check if key exist in dictionary # or not. If yes then simply append the # strVal into the list of it's corresponding # key. If not then map empty list onto # key and then start appending values if key in dict.keys(): dict[key].append(strVal) else: dict[key] = [] dict[key].append(strVal) # traverse dictionary and concatenate values # of keys together output = "" for key,value in dict.items(): output = output + ' '.join(value) + ' ' return output # Driver function if __name__ == "__main__": input=['cat', 'dog', 'tac', 'god', 'act'] print (allAnagram(input))
cat tac act dog god
Este artículo es una contribución de Shashank Mishra (Gullu) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA