参考:https://blog.csdn.net/xie_sining/article/details/83146105
链接中,思路已经极其清晰,不过该思路中没有最后给全排列数组进行去重。
以下是附带去重的代码:
function perm(str){
let res = [];
if (str.length <= 1) return [str]
else {
for (let i = 0; i < str.length; i++) {
let fir_str = str[i],
sec_str = str.slice(0,i)+str.slice(i+1),
str_re = perm(sec_str)
for(let i=0;i<str_re.length;i++){
res.push(fir_str + str_re[i])
}
}
}
return [...new Set(res)]
}
console.log(perm('abca'))