function permutations(string) {
return string.length === 1
? [string]
: [...new Set([...string].map((item, index) => {
return permutations(string.slice(0, index) + string.slice(index + 1)).map(val => item + val).join(',');
}).join(',').split(','))];
}
console.log(permutations("abc"));
console.log(permutations("aabb"));
bc
保留b,c传入func,返回【c】与b拼接就是bc
保留c,b传入func,返回【b】与c拼接就是cb
abc
保留a,bc传入func,返回【bc,cb】分别与a拼接就是【abc, acb】
保留b,ac传入func,返回【ac,ca】分别与b拼接就是【bac, bca】
也能这样
function permutations(string) {
return string.length == 2
? [string, string.charAt(1) + string.charAt(0)]
: [...string]
.map((char, i) => {
const sort = permutations(string.slice(0, i) + string.slice(i + 1));
return sort.map((item) => char + item);
})
.flat();
}
console.log(permutations("abcde"));