描述:
输入一个字符串,打印出该字符串中字符的所有排列。
例如输入字符串abc,则输出由字符a、b、c 所能排列出来的所有字符串:
abc、acb、bac、bca、cab 和 cba
代码展示:
function pre(s) {
let res = []
s = s.split('').sort((a, b) => {
return a > b ? 1 : -1
}).join('')
const dfs = (curr, store) => {
// 1. 是否满足条件添加
if (!store.length) {
return res.push(curr)
}
for (let i = 0; i < store.length; i++) {
if (i > 0 && store[i] === store[i - 1]) continue
// 3. 递归 dfs
console.log(curr + store[i], store.slice(0, i) + store.slice(i + 1))
dfs(curr + store[i], store.slice(0, i) + store.slice(i + 1))
}
}
dfs('', s)
return res
}
console.log(pre('abc'))