题解 | #全排列#
回溯算法,三个规则:选择列表 做出选择 下一个回溯 撤销选择 满足条件的加入结果列表
代码框架:
for 选择 in 选择列表:
# 做选择
将该选择从选择列表移除
路径.add(选择)
backtrack(路径, 选择列表)
# 撤销选择
路径.remove(选择)
将该选择再加入选择列表
const _permute = (string) => {
// 补全代码
let res = [];
let track = [];
function traverse(lujing, track) {
console.log(track);
if (track.length == lujing.length) {
res.push(track.join(""));
console.log(track);
return;
}
for (let i = 0; i < lujing.length; i++) {
if (track.indexOf(lujing[i]) != -1) {
continue;
}
track.push(lujing[i]);
traverse(lujing, track);
track.pop();
}
}
traverse(string, track);
console.log(res);
return res;
};
_permute("abc");