字母异位词分组Python解法

本文介绍如何使用Python解决LeetCode问题,通过排序和字典数据结构,将输入的字符串数组中的字母异位词组合在一起。讲解了sort和sorted的区别,并给出了Solution类的完整实现。

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

字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/group-anagrams
 

例:
 

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

解析:将每个字符串首先进行排序(sorted()函数),然后进行比较添加,最后提取结果转成list格式即可。

class Solution(object):
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        dic = {}  # 用字典进行存取
        for s in strs:  # 对每个字符串进行遍历
            keys = "".join(sorted(s))  # 对字符串进行正序排列
            if keys not in dic:  # 只有一个的情况
                dic[keys] = [s]  # 要记得带中括号,否则下面不能使用append(),而且最后的输出也需要。
            else:  # 多个的情况
                dic[keys].append(s)
        
        return list(dic.values())  # 只输出字典的值,并且转成列表格式。

注:

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值