回溯法之全排列

142 阅读1分钟

输入一个字符串,打印出该字符串中字符的所有排列。

你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。

示例

输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]

var res=[];
var str='';
var permutation = function(s) {
    var res=[];
    var newstr='';
    var arr=s.split('');
    var dfs=function(arr,newstr){
        if(arr.length===1){
            res.push(newstr + arr[0])
        }
        else{
            for(var i=0;i<arr.length;i++){
                let char=arr.splice(i,1).join("");
                newstr+=char;
                dfs(arr,newstr);
                arr.splice(i,0,char);
                newstr=newstr.slice(0,-1);
            }
        }
    }
    dfs(arr,newstr);
    return [...new Set(res)];
};

var arr='';
console.log(permutation(arr));