1. 程式人生 > >LeetCode:49. 字母異位詞分組

LeetCode:49. 字母異位詞分組

1、題目描述

給定一個字串陣列,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字串。

示例:

輸入: ["eat", "tea", "tan", "ate", "nat", "bat"],
輸出:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

說明:

  • 所有輸入均為小寫字母。
  • 不考慮答案輸出的順序。

2、題解

2.1、解法一

  原理:使用每個字串排序,然後作為字典的key,源字串作為value。

class Solution:
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        dic = {}

        for i in strs:
            k = tuple(sorted(i))
            if k not in dic:
                dic[k] = []
            dic[k].append(i)
        return [dic[k] for k in dic]