49.字母异位词分组

/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function (strs) {
    // 对每个字符串进行排序,因为字母异位排序后就是相同字符串
    const sortedStrs = strs.map(str => {
        return str.split('')
            .sort((a, b) => a.codePointAt(0) - b.codePointAt(0)) // codePointAt返回字符在unicode表的位置
            .join('')
    })
    console.log(sortedStrs)

    let map = {} // 记录排过序的字符串对应的原始字符串
    // 从排好序的字符串里找相同的字符串
    for (let i = 0; i < sortedStrs.length; i++) {
        let str = sortedStrs[i]
        if (map[str]) {
            map[str].push(strs[i]) // 原始的字符串
        } else {
            map[str] = [strs[i]]
        }
    }
    return Object.values(map)
};

var groupAnagrams = function (strs) {
    let map = {} // 记录排过序的字符串对应的原始字符串
    // 从排好序的字符串里找相同的字符串
    for (let i = 0; i < strs.length; i++) {
        // 对每个字符串进行排序,因为字母异位排序后就是相同字符串
        let str = strs[i]
        let sortedStr = str.split('')
            .sort((a, b) => a.codePointAt(0) - b.codePointAt(0)) // codePointAt返回字符在unicode表的位置
            .join('')

        if (map[sortedStr]) {
            map[sortedStr].push(str) // 原始的字符串
        } else {
            map[sortedStr] = [str]
        }
    }
    return Object.values(map)
}

console.log(groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"]))