输入一个字符串,打印出该字符串中字符的所有排列。

 

你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。

 

示例:

输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]
 

限制:

1 <= s 的长度 <= 8

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

/**
 * @param {string} s
 * @return {string[]}
 */
var permutation = function(s) {
    let res = new Set();
    let visit = {};
    let backtrack = (res, temp, index) => {
        for(let i = 0; i < s.length; i++) {
            if (temp.length == s.length) {
                res.add(temp);
                return
            }
            if (visit[i]) {
                continue
            }
            visit[i] = true
            
            backtrack(res, temp+s[i], i);
            visit[i] = false
        }
    }
    backtrack(res, '', 0);
    // console.log(res)
    return [...res];
};