题解 | #字符串的排列#
字符串的排列
http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7
牛蛙牛蛙 直接使用slice来去掉第i个元素避免了使用map 然后使用了一个set来去重
//大神写的简洁版
function Permutation(str, perm='', perms=[])
{
// write code here
if (str.length === 0) perms.push(perm)
for (let i = 0; i < str.length; i++){
let substr = str.slice(0, i) + str.slice(i+1)
perm += str[i]
Permutation(substr, perm, perms)
perm = perm.slice(0, -1)
}
return [... new Set(perms)]
}
//没通过的代码 太大了 超内存
// let per=''
// let res=[]
// let map=new Map()
// function Permutation(str)
// {
// // write code here
// recur(str,str.length)
// return res
// }
// function recur(str,len){
// if(len===0) {
// return []
// }
// if(per.length===len){
// if(!res.find(ele=>ele=per)){
// res.push(per)
// }
// }
// for(let i=0;i<len;i++){
// if(map.has(i)){
// continue
// }
// per+=str[i]
// map.set(i,str[i])
// recur(str,len)
// per=per.substring(0,per.length-1)
// map.delete(i)
// }
// recur(str.substring())
// }
module.exports = {
Permutation : Permutation
};