题目:给定一个字符串,输出他的全排列。abc=>abc,acb,bac,bca,cab,cba
思路:使用递归,当长度为1的时候,直接输出,长度大于1,循环,将每个位置的字符串分别设置为固定点。
比如我们在算abc的全排列的时候,我们先输出abc,acb 然后a的排列做完了,就是bac,bca
我们将该固定点的值取出,让剩下的值进入递归
const ff = str => {
if(!str){
return false;
}
const f = (str)=>{
let res = [];
if(str.length<=1){
return [str];
}
for(let i = 0;i<str.length;i++){
let c = str[i];//把该位置元素固定
let newStr = f(str.slice(0,i)+str.slice(i+1));
for(let j = 0;j<newStr.length;j++){
res.push(c+newStr[j]);
}
}
return res;
}
return [...new Set(f(str))];
}