全排列
- 字符串参数中的字符无重复且仅包含小写字母
- 返回的排列组合数组不区分顺序
const _permute = string => {
if (string.length === 1) {
return [string];
}
const res = [];
for (let s of string) {
const arr = string.split('').filter(str => str !== s);
_permute(arr.join('')).forEach(item => {
res.push(s + item);
});
}
return res;
};
const input = 'abc';
const result = _permute(input);
console.log(result);
这段代码是一个递归函数 _permute,用于生成字符串参数的所有排列组合。它使用了回溯法的思想。
首先,如果字符串的长度为 1,表示已经无法再进行排列,直接返回包含该字符串的数组 [string]。
否则,创建一个空数组 res,然后对字符串中的每个字符 s 进行遍历。在每次遍历中,生成一个新的数组 arr,其中排除当前字符
s。接着,递归调用 _permute 函数,传入 arr.join('') 作为新的字符串参数,获取其排列组合结果。对于递归返回的每个排列组合 item,将当前字符 s 与 item 拼接,并将结果添加到 res 数组中。
最后,函数返回所有排列组合的结果数组 res。