码迷,mamicode.com
首页 > 其他好文 > 详细

49.字母异位词分组

时间:2020-06-18 10:55:06      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:插入   组合   info   相同   ali   text   排列   splay   auto   

2020-06-18
字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
技术图片
题解:
思路1:排序+哈希表
var groupAnagrams = function (strs) {
  // hash表存的是有哪些组合的单词出现 i是出现时候插入到result数组中的下标
  let hash = {}, i = 0, sortItem; 
  let result = []; 
  strs.forEach(item => {
    sortItem = item;
    sortItem = sortItem.split(‘‘);
    // 每一项单词打算排序再组合起来 例如 eat => aet  tea => aet...
    sortItem = sortItem.sort().join(‘‘);
    // 判断hash中是否存了重组单词的下标 如果存了说明出现过
    if (hash[sortItem] >= 0) {
      result[hash[sortItem]].push(item); // 在result的对应下标中push这一个单词
    } else { // 如果hash中还没存这个单词重组后的 说明第一次出现
      hash[sortItem] = i; // 将这个单词重组后的词作为key存入hash中 值为存入result的下标i
      result[i] = [item]; // 在下标为i的地方创建新数组存这个单词
      ++i; // 每出现一个新的次 下标+1 方便存下一个新出现的词
    }
  });
  return result;
};

 

49.字母异位词分组

标签:插入   组合   info   相同   ali   text   排列   splay   auto   

原文地址:https://www.cnblogs.com/lanpang9661/p/13156037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!