输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]
这是一道全排列的题,我们需要递归遍历其所有的 可能。
var permutation = function (s) {
let len = s.length
// 终止条件
if (len === 0) return ['']
if (len === 1) return [s]
// 简历新数组
let res = []
for (let i = 0; i < len; i++) {
// 拿到当前的字符串
const char = s[i]
// 取出当前字符串之后剩下的字符串
let newStr = s.slice(0, i) + s.slice(i + 1)
// 再进行全排列
const next = permutation(newStr)
// 拿到每次全排列后的字符串,进行拼接
next.forEach(item => {
res.push(char + item)
})
}
return [...new Set(res)]
};