前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【一天一大 lee】字母异位词分组 (难度:中等) - Day20201214

【一天一大 lee】字母异位词分组 (难度:中等) - Day20201214

作者头像
前端小书童
发布2020-12-17 11:31:20
3630
发布2020-12-17 11:31:20
举报
文章被收录于专栏:前端小书童前端小书童

20201214

题目:

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

代码语言:javascript
复制
输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

抛砖引玉

声明一个辅助函数,将传入字符按照字符编码从小到大转换成新字符输出(字母异位词输出的字符都一致):

  • 转换成数组排序后重新转换成字符是否相同

利用转换后的字符作为哈希,记录strs中输出相同字符的元素

输出map的value

抛砖引玉

代码语言:javascript
复制
/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function(strs) {
    let map = new Map(),
        len = strs.length,
        index = 0;
    // 字符排序:字母异位词输出相同字符
    function helper(A) {
        return Array.from(A).sort().join('')
    }
    // 遍历strs,收集字母异位词
    for (let i = 0; i < len; i++) {
        const item = helper(strs[i])
        if (map.has(item)) {
            map.get(item).push(strs[i])
        }else{
             map.set(item,[strs[i]])
        }
    }
    return [...map.values()]
}

博客: 前端小书童

每天的每日一题,写的题解会同步更新到公众号一天一大 lee 栏目 欢迎关注留言

公众号:前端小书童

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端小书童 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:
    • 示例:
    • 抛砖引玉
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档