题解 | #字符串的排列#

字符串的排列

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
};
全部评论

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务