• Leetcode_49:字母异位词分组


    题目描述:

    给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

    字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

    就是将相同字母组合的单词放在一起

    示例 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组合。

    ②新建一个空白字典,如果该组合在字典中出现过,可以在原来的键对应的值后添加新的组合,如果没有出现过,则可以添加到字典中,键是经过排序后的组合,值是未经过排序后的组合。

    代码:

    1. class Solution(object):
    2. def groupAnagrams(self, strs):
    3. """
    4. :type strs: List[str]
    5. :rtype: List[List[str]]
    6. """
    7. group_dict = {}
    8. if len(strs) < 1:
    9. return strs
    10. else:
    11. for i in range(len(strs)):
    12. temp = strs[i]
    13. # temp 是字符串,调用sorted()方法对字符串进行排序,排序之后的数据以逗号分隔,所以需要"".join()连接
    14. temp_sort = "".join(sorted(temp))
    15. if temp_sort in group_dict:
    16. group_dict[temp_sort].append(temp)
    17. else:
    18. group_dict[temp_sort] = [temp]
    19. return group_dict.values()
    20. if __name__ == "__main__":
    21. a = Solution()
    22. print(a.groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]))

  • 相关阅读:
    MySQL事务隔离机制与实现原理详解
    Cheerleaders UVA - 11806
    接口和抽象类的区别详解
    java 之泛型详解
    React Hooks
    编译器工程师眼中的好代码:Loop Interchange
    软考-软件项目活动图详解
    vue3中<script setup> 和 setup函数的区别
    90-Docker详解
    【openGauss】在windows中使用容器化的mogeaver
  • 原文地址:https://blog.csdn.net/AnakinCSDN/article/details/134461581