Open In App

Print anagrams together in Python using List and Dictionary

Given an array of words, print all anagrams together. 

Examples:

Input: arr = [‘cat’, ‘dog’, ‘tac’, ‘god’, ‘act’]

Output: ‘cat tac act dog god’

This problem has existing solution please refer Anagrams and Given a sequence of words, print all anagrams together links. We will solve this problem in python using List and Dictionary data structures. Approach is very simple :

Implementation:




# 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))

Output
cat tac act dog god 

Time Complexity: O(n), where n is the total number of the characters in the given input.
Auxiliary Space: O(n)


Article Tags :