力扣经典100题- 字母异位词分组
字母异位词分组
思路:大力出奇迹,首先写一个算法,暴力的出任意字符串的全排列集合。然后依次遍历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
};
普通测试用例能通过,但是提交后发现,超时…
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
