字母异位词分组

原题地址

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

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

示例 1:

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

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

提示:

  • 1 <= strs.length <=10410^4104
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母

思路分析

方法一

  1. 字母异位词排序后,所得到的的字符串一定是相同的;
  2. 因此,我们可以使用排序后的字符串作为 key 值,然后将所存在的字母异位词组成数组当作对应 key 值的 value 值;
  3. 定义一个字符串排序方法 sortString,此处使用的是先将字符串转换成数组,然后数组排序,最后再组合成字符串的方式;
  4. 定义一个空对象 map,使用 sortString(item) 后的值作为 key,若存在则将 item push 到数组中,若不存在,则使用 item,构建一个数组去赋值;
  5. 最后返回 Object.values(map) 即可。

方法二

  1. 字母异位词中每个字母出现的次数一定是相同的;
  2. 因此,我们可以使用每个字母统计次数后的数据作为 key 值,然后将所存在的字母异位词组成数组当作对应 key 值的 value 值;
  3. 因为只含有小写字母,所以可以定义一个长度为26的字符串来统计每个字母出现的次数,然后将对应的字符串存入map中;
  4. 最后返回 Object.values(map) 即可。

AC 代码

方法一

/*** @param {string[]} strs* @return {string[][]}*/
var groupAnagrams = function(strs) {const map = { }strs.forEach(item => {if(map[sortString(item)]) {map[sortString(item)].push(item)} else {map[sortString(item)] = [item]}})return Object.values(map)
};var sortString = function(str) {return str.split('').sort().join('')
}

结果:

  • 执行结果: 通过
  • 执行用时:132 ms, 在所有 JavaScript 提交中击败了27.20%的用户
  • 内存消耗:51.5 MB, 在所有 JavaScript 提交中击败了38.50%的用户
  • 通过测试用例:115 / 115

方法二

/*** @param {string[]} strs* @return {string[][]}*/
var groupAnagrams = function(strs) {const map = {}strs.forEach(item => {const count = new Array(26).fill(0)for (let c of item) {count[c.charCodeAt() - 'a'.charCodeAt()]++}if(map[count]) {map[count].push(item)} else {map[count] = [item]}})return Object.values(map)
};

结果:

  • 执行结果: 通过
  • 执行用时:144 ms, 在所有 JavaScript 提交中击败了17.48%的用户
  • 内存消耗:51.7 MB, 在所有 JavaScript 提交中击败了33.16%的用户
  • 通过测试用例:115 / 115

END

LeetCode 热题 HOT — 字母异位词分组相关推荐

  1. leetcode力扣49. 字母异位词分组

    给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan&quo ...

  2. 【LeetCode笔记】49. 字母异位词分组(Java、字符串、哈希表)

    文章目录 题目描述 代码 & 思路 题目描述 考虑:如何把字母相同.排列不同的字符串组合成一个相同的.独一无二的东西? 尝试1:使用ascii的和(不行,虽然说确实相同,但是独一无二不满足) ...

  3. Leetcode刷题100天—49. 字母异位词分组( 排序)—day37

    前言: 作者:神的孩子在歌唱 大家好,我叫运智 49. 字母异位词分组 难度中等847收藏分享切换为英文接收动态反馈 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. ...

  4. 模拟卷Leetcode【普通】049. 字母异位词分组

    049. 字母异位词分组 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次. 示 ...

  5. LeetCode 49字母异位词分组50pow(x,n)51八皇后

    原创公众号:bigsai 如果不错记得点赞收藏! 关注回复 bigsai 领取Java进阶pdf资源,回复进群加入力扣打卡群. 上周打卡内容:43字符串相乘&44通配符匹配 45跳跃游戏&am ...

  6. 【LeetCode】【HOT】49. 字母异位词分组(递归)

    [LeetCode][HOT]49. 字母异位词分组 文章目录 [LeetCode][HOT]49. 字母异位词分组 package hot;import java.util.ArrayList; i ...

  7. leetcode之字母异位词分组

    题目描述: 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次. 示例 1: 输 ...

  8. leetcode 49. 字母异位词分组

    49. 字母异位词分组 - 力扣(LeetCode) 一开始想的是把各个字符串中每个字符ascii码值相加,然后相同的ascii码值放在一个组,在相同的ascii码值组中再去细找字母异位词. 一开始算 ...

  9. Leetcode 字母异位词分组

    字母异位词分组 题目描述: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 说明: 所有输入均为小写字母. 不考虑答案输出的顺序. 题目链接 class Sol ...

最新文章

  1. 在CMD窗口连接到Mysql
  2. 消控中心人员配置_建筑能耗监测系统集中化运行管理模式和人员配置!
  3. bat 启动 不弹出对话框_CAD中转换出的PDF文件模糊要怎么办
  4. linux系统命令行基础知识点
  5. mysql管理应用_如何在PHP和MySQL中制作出色的库存管理应用程序
  6. 【SDK】Memory read error at 0xF8007080
  7. 无缝的缓存读取:双存储缓存策略
  8. php pdo效率,php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
  9. Git:git stash存储文件修改
  10. Vagrant 与 VirtualBox 的保姆级安装教程
  11. Windows系统(tips)
  12. Java根据信用卡号区分国际常用的五大信用卡卡种:VISA,Master,AE,DC,JCB.
  13. 深入理解Amazon Alexa Skill(四)
  14. matlab has encountered,[万能解决问题]MATLAB has encountered an internal problem and needs to close....
  15. HTML结构及常用的标签
  16. 本周AI热点回顾:百度推出全球首个mRNA疫苗不稳定性解决方案、性能提升20倍:英伟达GPU旗舰A100
  17. c语言程序由什么开头和结尾,一个完整的C程序由什么组成?
  18. FX3U控制松下服务器位置不准,三菱FX3UPLC如何控制松下伺服_.docx
  19. python股票基本面分析_股票基本面分析
  20. Linux onvif协议实现二(C语言客户端)

热门文章

  1. 1-drf-drf入门规范
  2. GEE:批量下载数据,按月合成,不同景,全实验区域,一键执行
  3. html如何实现左右布局,前端中的左右布局实现
  4. 15数字华容道解法 图解_数字华容道最后一行技巧 数字华容道教学步骤
  5. 【100个 Unity小知识点】☀️ | Unity 中怎样读取Excel文件
  6. idea右侧maven依赖飘红解决办法
  7. 一步步解密微商城系统开发流程
  8. SQLite使用模糊查询
  9. 为什么录像都是用.avi而不是.mp4?
  10. 中青年人脑白质的年龄效应和性别差异:DTI、NODDI 和 q 空间研究