题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
JS
let result = [];
function Permutation(str)
{
// write code here
result = [];
let arr = str.split('');
arr.sort();
let len = arr.length;
for(let i = 0;i < len;i++){
let flag = new Array(len);
flag[i] = true;
let res = "";
res += arr[i];
next_permutation(arr , flag , res);
}
return [...new Set(result)];
}
function next_permutation(arr , flag , res){
if(res.length >= arr.length){
result.push(res);
return ;
}
for(let i = 0;i < arr.length;i++){
if(flag[i] === undefined){
flag[i] = true;
res += arr[i];
next_permutation(arr , flag , res); // 递归
// 回溯
res = res.slice(0 , res.length - 1);
flag[i] = undefined;
}
}
}
哎,我太菜了。。。。。