思想:
将每个字符串转成数组进行sort,将sort得到的结果作为key值,value值就是相应的使用这些字符的字符串构成的数组。
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function(strs) {
//定义一个map,key是排序的str值,value是数组
let map=new Map();
//遍历数组
strs.forEach(function(item,index){
//将字符串转成数组进行排序,排序完又转成字符串
let itemsort=item.split('').sort().join('');
//如果map里面没有这个值,就创建map中响应的键值对
if(!map.has(itemsort)){
map.set(itemsort,[]);
}
map.get(itemsort).push(item);
});
let result=[];
//然后将所有的value数组放到大数组中
map.forEach((item,index,mapobj)=>{
//每一组使用相同字母的字符串排序
item.sort();
result.push(item);
})
//整个大数组排序
result.sort(function(arr1,arr2){
return arr1.length-arr2.length;
})
return result;
};