leetcode字母异位词分组

87 阅读1分钟

字母异位词分组

要点:Map对象,用于存储 键-值(key-values)对,在这道题中,键是排序后的字符串,值是原始字符串的列表;

  1. 循环遍历输入的字符串数组strs
  2. 对于每个字符串,首先将其转换成字符数组array
  3. 使用sort方法进行排序;
  4. 将排序后的数组转为字符串,并作为key(Map的键);
  5. 使用map.get(key)检查Map中是否已经有了这个键对应的值;
  6. 如果不存在,就创建一个新的数组list;
  7. list是一个数组,将当前字符串 str 添加到list中;
  8. 将更新后的list设置回Map对象中,键为key
  9. 循环结束后,使用 Array.from(map.values()) 将Map对象中的所有值(即分组后的变位词列表)转换成一个数组,并返回这个数组。
var groupAnagrams = function(strs) {
    let map = new Map();
    
    for(let str of strs){
        let array = Array.from(str);
        array.sort();
        let key = array.toString();
        let list = map.get(key) ? map.get(key) : new Array();
        /** 将上一行代码分成两部分,更好理解。
        let list = map.get(key);
			if (!list) {
			    list = new Array();
			}
        */
        list.push(str);
        map.set(key, list);
    }
    return Array.from(map.values());
};

Pasted image 20240701211420.png