力扣49. 字母异位词分组

在这里插入图片描述
第一种解法
把字符先进行排序

var groupAnagrams = function(strs) {
 const map=new Map();
 var result=[];
 for(const str of strs)
   {
     let a=str.split("")
     a.sort(function(a,b){
       //一定要把a,b转成ascii再进行计算
       return a.charCodeAt()-b.charCodeAt();
     });
     console.log(a)
     var key=a.join("")
     if(map.has(key))
       {
         // map.set(key,map.get(key).push(str))
         //push进数组
         map.set(key,[...map.get(key),str]);
       }
     else
       {
       //注意这里用[str]是为了放进的形式为["21321","123123213"]
         map.set(key,[str])
       }
   }
  for(const arr of map)
    {
      result.push(arr[1]);
    }
    return result;
};

在这里插入图片描述
第二种方法给每个字母计算频率

var groupAnagrams = function(strs) {
 const map=new Map();
 var result=[];
 for(const str of strs)
   {
     //组件一个长度为26都为0的数组
     const characters=Array(26).fill(0)
     for(let i=0;i<str.length;i++){
      //字符ASCII码减去97就是其在数组中的索引
      const ascii=str.charCodeAt(i)-97;
      characters[ascii]++;
     }
     //把数组连接成字符串
     const key=characters.join("");
          console.log(key)
     if(map.has(key))
       {
         map.set(key,[...map.get(key),str]);
       }else{
         map.set(key,[str]);
       }
};
  //对map数组进行遍历
  for(const arr of map)
    {
      //arr[0]为其key值 arr[1]为其对应的值
      result.push(arr[1])
    }
    return result;
}

在这里插入图片描述
这里会有个问题 [“bdddddddddd”,“bbbbbbbbbbc”]最后的key值是一样的

string b
b.charCodeAt() 转换成ascii码
map.set(key,[…map.get(key),str]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值