[leetcode] 49. Group Anagrams _ Algorithm Problem Solve for python



1. Problem

49. Group Anagrams

Given an array of strings strs, group the anagrams together. You can return the answer in any order.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

Example 1:

Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]

Example 2:

Input: strs = [""]
Output: [[""]]

Example 3:

Input: strs = ["a"]
Output: [["a"]]

Constraints:

  • 1 <= strs.length <= 10^4
  • 0 <= strs[i].length <= 100
  • strs[i] consists of lowercase English letters.

2. Solution

I solved this problem like this.

  • Put s value(each str == s) on dic. The key is sorted(s).
  • Put dic values on ans list.
class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        dic = {}
        for s in strs:
            key = ''.join(sorted(s))
            if key not in dic:
                dic[key] = []
            dic[key].append(s)
        
        ans = []
        for key in dic:
            ans.append(dic[key])

        return ans