一、题目描述
二、解题思路
普通的递归实现即可。
三、代码实现
var permutation = function (s) {
if (s.length == 0) return ['']
// 递归退出条件
if (s.length == 1) return [s]
const res = []
const len = s.length
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)
// 将char和全排列的字符串拼接
next.forEach(element => {
res.push(char + element)
});
}
// 返回并去重,在递归中返回给next
return [... new Set(res)]
}