全排列算法

参考资料

先上代码,实现非常简洁

/**
 * @description 给定字符串输出字符串中字母的全排列
 */
const input = ['a', 'b', 'c'];
const algorithm = (input) => {
    const result = [];
    const permutation = (arr, first = '') => {
        let beforeStr = first;
        arr.forEach((item) => {
            if (arr.length <= 1) {
                return result.push(beforeStr + item);
            }
            const extra = arr.filter((_item) => _item !== item);
            return permutation(extra, beforeStr + item);
        });
        return beforeStr;
    };
    permutation(input);
    return result;
};

console.log('input', input);
console.log('output', algorithm(input));

输出

image.png

主要思路

image.png

在此树中,每一个从树根到叶子节点的路径,就对应了集合A的一个排列。通过递归算法,每次将一个结果入结果集合,最终输出。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问题:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a,b,c所能排列出来的所...
    方法一君阅读 3,616评论 0 0
  • 题目:给定元素a,b,a,b,c,c,d,求解出所有的排列。思路:首先这道题的算法是一个比较经典的算法,它并不是使...
    IT孤独者阅读 5,147评论 0 0
  • 问题背景### 递归很常用,但确实不好理解,下边这段程序是用来进行数字全排列的由于很多算法需要讲数字全排列后再来暴...
    Moonsmile阅读 3,043评论 0 0
  • 搬完家大约一个月的时间,我关注到楼道有盆草。 挺高的,到我的大腿,叶子宽又长。 它应该有个品种,可能还有个名字,但...
    凝了个大重阅读 3,770评论 4 4
  • 一项好的投资策略应该是最小化主观因素,最大化客观因素的投资策略。今天来谈谈一项神奇的交易策略——平均交易策略。可以...
    杨胖儿阅读 3,899评论 0 1

友情链接更多精彩内容