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
};