题目
题目来源:力扣(LeetCode)
输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = “abc”
输出:[“abc”,”acb”,”bac”,”bca”,”cab”,”cba”]
/**
* @param {string} s
* @return {string[]}
*/
var permutation = function (s) {
let set = new Set()//set集合去重
if (s.length == 1) return [s];
for (let i = 0; i < s.length; i++) {
let char = s[i]
let ss = s.slice(0, i) + s.slice(i + 1, s.length)//拼接其余字符
let l = permutation(ss)//递归找到其余元素的所有排列方式
for (let j = 0; j < l.length; j++) {
set.add(char + l[j])//将遍历的字符char拼接到剩余字符全排列的头部并存储到集合中
}
}
return [...set]//集合转化为数组
};