zoukankan      html  css  js  c++  java
  • 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;
    };
  • 相关阅读:
    我从Linux走来,选择了Windows
    静态路由(三路由)
    设置跨交换机VLAN
    服务器只能被动接受
    理解 atime,ctime,mtime (下)
    理解 atime,ctime,mtime (上)
    visualvm连接服务器jvm进行监控
    mysql 日期函数格式
    关于springmvc跨域
    Javassist初体验
  • 原文地址:https://www.cnblogs.com/lanpang9661/p/13156037.html
Copyright © 2011-2022 走看看