function permin(str){
if(str.length<=1)return [str]
let res=[];//res是string[]
let len=str.length
let set=new Set();//存头,放重复
for(let i=0;i<len;i++){//遍历之后拆分
let head=str[i]
let tail=str.slice(0,i).concat(str.slice(i+1,len))
let result=permin(tail)//对tail进行递归拿到返回的下一层res
if(!set.has(head)){
set.add(head)
let rl=result.length;
for(let j=0;j<rl;j++){
res.push(head+result[j])
}
}
}
return res
}
console.log(permin([1,2,3,3]))
对字符串或者数组进行去重全排列(精简代码)
最新推荐文章于 2022-05-06 17:18:22 发布