字母异位词分组

思路:大力出奇迹,首先写一个算法,暴力的出任意字符串的全排列集合。然后依次遍历strs,双循环得出所有剩余项目中的亦或字符串,完毕。

/**
 * @param {string[]} strs
 * @return {string[][]}
 */

const returnAllChildArr = (arr) => {
  const res = []
  const used = new Array(arr.length).fill(false)
  const walk = (curArr, len) => {
    if (curArr.length === len) {
      if (!res.includes(curArr.join(''))) {
        res.push(curArr.join(''))
      }
      return
    }
    for (let i = 0; i < len; i++) {
      if (used[i]) continue
      used[i] = true
      curArr.push(arr[i])
      walk(curArr, len)
      curArr.pop()
      used[i] = false
    }
  }

  walk([], arr.length)
  return res
}



var groupAnagrams = function(strs) {
    const res = []
    const used = new Array(strs.length).fill(false)
    for (let i =0; i < strs.length;i++) {
        if (used[i]) continue
        let curArr = strs[i]
        used[i] = true
        const curRes = [curArr]
        const allChild = returnAllChildArr(curArr.split(''))
        console.log('allChild>>>', allChild)

        for (let  j = 0; j < strs.length; j++) {
            if (used[j]) continue
            if (allChild.includes(strs[j])) {
                curRes.push(strs[j])
        used[j] = true

            }          
        }
        res.push([...curRes])
    }
return res

};

普通测试用例能通过,但是提交后发现,超时…