Computer >> Computer tutorials >  >> Programming >> Python

Group Anagrams in Python


Suppose, we have a set of strings. We have to group anagram together. So if the ["eat", "tea", "tan", "ate", "nat", "bat"], then the groups are [["ate","eat","tea"],["nat","tan"],["bat"]]

To solve this, we will follow these steps −

  • Define res as map
  • for i in string array
    • x := x and join, sorted string of i
    • if x in result
      • insert i in result[x]
    • else result[x] := [i]
  • return values of res as list

Example(Python)

Let us see the following implementation to get a better understanding −

class Solution:
   def groupAnagrams(self, strs):
      result = {}
      for i in strs:
         x = "".join(sorted(i))
         if x in result:
            result[x].append(i)
         else:
            result[x] = [i]
      return list(result.values())
ob1 = Solution()
print(ob1.groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]))

Input

["eat", "tea", "tan", "ate", "nat", "bat"]

Output

[["ate","eat","tea"],["nat","tan"],["bat"]]