全排列

简介: 全排列,

全排列

  1. 字符串参数中的字符无重复且仅包含小写字母
  2. 返回的排列组合数组不区分顺序
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。

目录
相关文章
|
缓存 监控 前端开发
前端性能优化以及解决方案
前端性能优化关乎用户体验和网站竞争力,包括减少HTTP请求、使用CDN、压缩资源、延迟加载、利用浏览器缓存等策略。制定优化计划,使用监控工具,遵循最佳实践并持续学习,能提升网站速度和稳定性。
325 0
|
11月前
|
数据采集 传感器 监控
多协议网关BL110钡铼6路RS485转MQTT协议云网关
BL110钡铼6路RS485转MQTT协议云网关是一款高性能、易配置的工业级设备,适用于各种需要远程监控和数据采集的物联网应用场景。通过将传统RS485设备的数据转换为MQTT协议并上传至云平台,实现了设备的远程管理和智能控制,极大地提升了系统的管理效率和响应速度。
380 2
|
存储 监控 NoSQL
【赵渝强老师】Redis的RDB数据持久化
Redis 是内存数据库,提供数据持久化功能以防止服务器进程退出导致数据丢失。Redis 支持 RDB 和 AOF 两种持久化方式,其中 RDB 是默认的持久化方式。RDB 通过在指定时间间隔内将内存中的数据快照写入磁盘,确保数据的安全性和恢复能力。RDB 持久化机制包括创建子进程、将数据写入临时文件并替换旧文件等步骤。优点包括适合大规模数据恢复和低数据完整性要求的场景,但也有数据完整性和一致性较低及备份时占用内存的缺点。
443 6
|
存储 消息中间件 监控
死信队列(Dead Letter Queues)
死信队列(Dead Letter Queues)
|
监控 分布式数据库 Hbase
WAL 对写入性能的直接影响
WAL 对写入性能的直接影响
|
缓存 监控 前端开发
React 代码优化方案
【8月更文挑战第19天】React 代码优化方案
267 0
|
Java
Java栈(Stack)深度解析与实现
Java栈(Stack)深度解析与实现
507 1
|
机器学习/深度学习 存储 搜索推荐
百亿大规模图在广告场景的应用
这篇摘要主要介绍了美团外卖在搜索推荐业务中如何利用图技术解决挑战,包括外卖广告搜索推荐业务的介绍、异构大图的演进、大规模图引擎的建设,以及系统的总结和展望。
|
设计模式 安全 Java
老系统重构系列--如何用一套流程接入所有业务线
**摘要:** 本文介绍了老系统改造的过程,作者提出,ToB业务的挑战在于需要支持多种差异化的业务需求,而模板模式在处理这种需求时可能会导致继承关系复杂和粒度过粗。为了解决这些问题,文章提出了以下步骤: 1. **梳理流程差异点**:识别不同业务流程的差异,以便确定扩展点。 2. **领域模型梳理**:区分核心域和支撑域,确保核心域的稳定性。 3. **二次抽象隔离层**:创建隔离层,避免核心域因新业务接入而变得不稳定。 4. **基于SPI的扩展体系建设**:选择了COLA-SPI实现扩展点,允许业务域定义接口并实现差异化的流程逻辑。
557 0