题解 | #字符串的排列#

字符串的排列

http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7

//substring 用于字符串....charAt(i)用于字符串索引
//n!递归找出口的方法是,递归函数同时传递res。当满足结束条件就push进res
function Permutation(str)
{
    // write code here
    if(str=="")return []
    let res=[]
    test(str,res,0)
    return res
}
function test(str,res,star){
    if(str.length-1==star){
        if(has(res,str)<0){
            res.push(str)
        }
    }
    else{
        for(let i=star;i<str.length;i++){
            let str1=''
            for(let j=0;j<str.length;j++){
                if(j==i){str1=str1+str.charAt(star)}
                else if(j==star){str1=str1+str.charAt(i)}
                else{str1=str1+str.charAt(j)}
            }
            str=str1
            console.log(str)
            test(str,res,star+1)
            let str2=''
            for(let j=0;j<str.length;j++){
                if(j==i){str2=str2+str.charAt(star)}
                else if(j==star){str2=str2+str.charAt(i)}
                else{str2=str2+str.charAt(j)}
            }
            str=str2
             console.log(str)
        }
    }
}
function has(arr,str){
    for(let i=0;i<arr.length;i++){
        if(arr[i]==str){
            return i
        }
    }
    return -1
}
module.exports = {
    Permutation : Permutation
};
全部评论

相关推荐

一天代码十万三:这都不能算简历吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务