https://www.bilibili.com/video/BV1nC4y1W7ah?p=2
```function Permutation(str)
{
// write code here
//考点:深度遍历优先DFS及回溯
let arr=str.split('') //先将str转换成数组
let res=[]
function swap(p,q){
[arr[p],arr[q]]=[arr[q],arr[p]] //ES6解构,交换两个元素
}
function dfs(p,q){
if(p===q){res.push(arr.join(''));return} //如果只剩一个字符,不用交换,将该排列推入res
for(let i=p;i<=q;i++){ //先自己跟自己交换,下一轮跟索引号+1交换,一直到和最后一个元素交换
swap(p,i)
dfs(p+1,q) //深度遍历
swap(p,i) //回溯
}
}
dfs(0,arr.length-1)
res=Array.from(new Set(res)) //利用Set去重
return res
}
module.exports = {
Permutation : Permutation
};