给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
就是将相同字母组合的单词放在一起
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""]
输出: [[""]]
示例 3:
输入: strs = ["a"]
输出: [["a"]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i]
仅包含小写字母①首先想到的思路是进行排序,排序之后不同的字母组合也会变成相同的有shun组合。
②新建一个空白字典,如果该组合在字典中出现过,可以在原来的键对应的值后添加新的组合,如果没有出现过,则可以添加到字典中,键是经过排序后的组合,值是未经过排序后的组合。
- class Solution(object):
- def groupAnagrams(self, strs):
- """
- :type strs: List[str]
- :rtype: List[List[str]]
- """
- group_dict = {}
- if len(strs) < 1:
- return strs
- else:
- for i in range(len(strs)):
- temp = strs[i]
-
- # temp 是字符串,调用sorted()方法对字符串进行排序,排序之后的数据以逗号分隔,所以需要"".join()连接
- temp_sort = "".join(sorted(temp))
- if temp_sort in group_dict:
- group_dict[temp_sort].append(temp)
- else:
- group_dict[temp_sort] = [temp]
- return group_dict.values()
-
-
- if __name__ == "__main__":
- a = Solution()
- print(a.groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]))