《每日一题》49. Group Anagrams 字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[["ate","eat","tea"],["nat","tan"],["bat"]
]
说明:
- 所有输入均为小写字母。
- 不考虑答案输出的顺序。
排序
由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。
Python
class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:ans = collections.defaultdict(list)for word in strs:key = "".join(sorted(word))ans[key].append(word)return list(ans.values())
复杂度分析
时间复杂度:O(nklogk)O(nk \log k)O(nklogk),其中 nnn 是 strs\textit{strs}strs 中的字符串的数量,kkk 是 strs\textit{strs}strs 中的字符串的的最大长度。需要遍历 nnn 个字符串,对于每个字符串,需要 O(klogk)O(k \log k)O(klogk) 的时间进行排序以及 O(1)O(1)O(1) 的时间更新哈希表,因此总时间复杂度是 O(nklogk)O(nk \log k)O(nklogk)。
空间复杂度:O(nk)O(nk)O(nk),其中 nnn 是 strs\textit{strs}strs 中的字符串的数量,kkk 是 strs\textit{strs}strs 中的字符串的的最大长度。需要用哈希表存储全部字符串。
《每日一题》49. Group Anagrams 字母异位词分组相关推荐
- Leetcode每日一题:49.group-anagrams(字母异位词分组)
这道题我认为题目没有写清楚,测试用例中两个完全相同的字符串也归为一组,然而从题意中我们会认为这两个字符串只需放入一个即可 解题思路: 方法1:利用hash + map 先用hash判断字符串是否相同 ...
- Leetcode每日一题:242.有效的字母异位词
如有错误,感谢指正! // // Created by Administrator on 2020/3/31. // #include <iostream> #include <st ...
- Leetcode刷题100天—49. 字母异位词分组( 排序)—day37
前言: 作者:神的孩子在歌唱 大家好,我叫运智 49. 字母异位词分组 难度中等847收藏分享切换为英文接收动态反馈 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. ...
- 49. 字母异位词分组
49. 字母异位词分组 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次. 示例 ...
- 【LeetCode】【HOT】49. 字母异位词分组(递归)
[LeetCode][HOT]49. 字母异位词分组 文章目录 [LeetCode][HOT]49. 字母异位词分组 package hot;import java.util.ArrayList; i ...
- LeetCode 热题 HOT — 字母异位词分组
字母异位词分组 原题地址 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次. ...
- leetcode 49. 字母异位词分组
49. 字母异位词分组 - 力扣(LeetCode) 一开始想的是把各个字符串中每个字符ascii码值相加,然后相同的ascii码值放在一个组,在相同的ascii码值组中再去细找字母异位词. 一开始算 ...
- 【LeetCode】49.字母异位词分组 (三种解法开拓思路,java实现)
49. 字母异位词分组 分析 方法一:排序数组分类 思路 当且仅当它们的排序字符串相等时,两个字符串是字母异位词. 算法 维护一个映射 ans : {String -> List},其中每个键 ...
- LeetCode 49字母异位词分组50pow(x,n)51八皇后
原创公众号:bigsai 如果不错记得点赞收藏! 关注回复 bigsai 领取Java进阶pdf资源,回复进群加入力扣打卡群. 上周打卡内容:43字符串相乘&44通配符匹配 45跳跃游戏&am ...
最新文章
- 【转】父类子类指针相互转换问题
- 用Python实现Gauss-Jordan求逆矩阵
- oracle定时器定时删除30天前的数据_Redis的过期键删除策略
- 人际交往的“三有三避”
- script与scriptreplay用法
- 多路平衡查找树 --- B(B-)树
- 鸿蒙电视应用市场,任正非:鸿蒙系统已上线,未来将被应用到手机、平板、电视系列产品上...
- maven安装以及常用配置,idea如何配置maven
- HTML5 Video播放服务端大文件
- MSP430 PIN 操作寄存器
- CDH 5.13.0安装方法
- python读取hive方案分析
- 史上最全的 struts2 面试题
- 程序员职场突破——建立优势策略,找到职业突破发力点
- Excel-VBA 快速上手(四、Excel 程序事件、工作簿事件、工作表事件)
- CYGWIN安装方法
- 高斯函数的傅里叶变换
- java入门(3)——简易绘图板
- 受邀参加2009中国电子商务创新发展高峰论坛
- php 抓取弹幕,php实现斗鱼弹幕,一起来欣赏弹幕吧~