JS全排列

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"));

posted on 2021-09-01 04:36  In-6026  阅读(63)  评论(0)    收藏  举报

导航