49.字母异位词分组

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;
};
原文地址:https://www.cnblogs.com/lanpang9661/p/13156037.html