LeetCode_Hot100_哈希_49字母异位词分组_Python

本文描述了一名初次接触LeetCode的用户在解决字符串数组中字母异位词组合问题时的想法和使用Python实现的解决方案,包括利用排序和字典数据结构优化时间和空间复杂度的过程。
摘要由CSDN通过智能技术生成
看题目前心里随便想的:

这个是我第一次正式刷LeetCode的第一道题,我完全不懂任何的原理,学习数据结构也有点太久远了,现在都有一些忘记了,所以还是一点点学习吧(嘿嘿)

题目

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

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

示例 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] 仅包含小写字母

拿到题目的想法点(不一定正确):

对列表,先获取第一个词,然后获取每一个字母,A对应0,Z对应23,然后重新排列每一个词,然后两两作比对,如果两个词对应上了,或者多个词对应上了,就输出原来样式的匹配词的列表形式然后这样依次类推(有一个问题就是重复怎么样去掉)。但是这样应该空间复杂度和时间复杂度都拉满了。

--所以我打算看一下题解

题解

思路

字符串处理

(PS:什么是字符串处理,之后学习的时候可以看一下)

Code
class Solution(object):
    def groupAnagrams(self, strs):
        d = defaultdict(list)
        for s in strs: d[''.join(sorted(s))].append(s)
        return list(d.values())      

我的拆分:
1.创建了一个默认字典“d”

2.for循环,“s”是字符串“strs”的每一个元素(如"tea"

 for s in strs: d[''.join(sorted(s))].append(s),这个里面的“:”表示是for循环的开始,只是吧d[''.join(sorted(s))].append(s)和“:”写到了一起,没有特殊的语法。''.join(list).join()是Python字符串的一个方法,它合并(或“连接”)列表中的所有字符串元素,并在每个元素之间插入指定的分隔符。在你的代码中,分隔符是空字符串'',所以 .join()就直接将列表中的字符串元素组合在一起,没有额外的字符被插入。也就是s取来,然后用无间隔的‘’,连接重新排序好的字符串

比如说‘eat’重新排列是ate。然后在d的这个键 后面的值是原来的s,如果有这个键的列表,就把这个s加入到这个列表当中,如果没有这个列表,就创建一个这个列表,然后把s加入。

2024年3/8日-第一刷

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就是随便学学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值