首页 > 其他分享 >字符串全排列-js

字符串全排列-js

时间:2023-01-18 19:55:48浏览次数:51  
标签:排列 const nums js length let 字符串 path

题目描述

image

思路分析

对于全排列类型的题我们都可以按照之前的思路去做,(全排列)。采用回溯的方法。这里的字符串我们也可以借助之前的函数,将字符串转为数组即可

代码参考

const permute = (str) => {
  // 所有的结果
  const nums = str.split('')
  const res = []
  // 一次的数据,这里需要的返回形式是['ab','ba']的类型,因此每一次的遍历结果可用字符串保存
  let path = ''
  // 该位置的数字之前是否访问过,默认为0表示未访问过
  let use = new Array(nums.length).fill(0)
  // 遍历的深度
  let depth = 0
  const dfs = () => {
    // 递归退出条件,如果深度等于数组长度,则说明已经遍历到树的叶子节点
    if (depth === nums.length) {
      res.push(path)
      return
    }
    // 遍历数组
    for (let i = 0; i < nums.length; i++) {
      // 判断当前元素是否使用过,如果用过则跳出
      if (use[i]) {
        continue
      }
      // 字符串拼接
      path += nums[i]
      // 深度++
      depth++
      // 标志当前数据已使用过
      use[i] =
        // 递归调用
        dfs()
      // 开始回溯
      use[i] = 0
      depth--
      // 字符串删除最后一个
      path = path.substring(0, path.length - 1)
    }
  }
  dfs()
  return res
}

标签:排列,const,nums,js,length,let,字符串,path
From: https://www.cnblogs.com/zx529/p/17060470.html

相关文章

  • 代码随想录算法训练营第八天 | 反转字符串、反转字符串II,剑指Offer 05.替换空格,左旋
    344.反转字符串classSolution{public:voidreverseString(vector<char>&s){intleft=0;intright=s.size()-1;while(left<right){swap(s[left],s[rig......
  • c++基础篇之C++ 字符串
    C++字符串C++提供了以下两种类型的字符串表示形式:C风格字符串C++引入的string类类型​​C风格字符串​​C风格的字符串起源于C语言,并在C++中继续得到支持。字符......
  • JS_10_document对象
    js中用来操作HTML文档的对象,通过操作document对象可以对正在运行的代码进行修改。 一、获取HTML标签对象直接获取:1、通过id获取:window(可省).document.getElementB......
  • 《Vue.js 设计与实现》读书笔记 - 第 4 章、响应系统的作用与实现
    第4章、响应系统的作用与实现4.1响应式数据与副作用副作用函数就是会对外部造成影响的函数,比如修改了全局变量。响应式:修改了某个值的时候,某个会读取该值的副作用函......
  • JSON传递bool类型数据的处理方式
    ajax中使用json传递数据时,其它数据类型都不是问题,但是如果服务器端生成的JSON中有bool类型的数据时,到客户端解析时出现了小小的问题,总结如下:服务器返回的JSON为:{"TypeID":[......
  • 利用数组特性便利json对象中属性
    在使用ajax编程时,有时候服务器端返回的json的属性是不确定的,这样在客户端使用时,就没有办法使用json对象的属性名称来访问属性值。 我们可以将json对象看作是一个字典数组,具......
  • JS 前端大文件上传源码
    ​对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程......
  • 写JS的过程中摁F12发现:Uncaught TypeError: Cannot set properties of null (setting
    在写JavaScript的过程中出现如上图显示的问题,很有可能是onblur前面的类型和你定义的类名不一样,要仔细检查一下你写的类名前后是否一致。......
  • MeterSphere 接口自动化 CSV 整合 JSON 文件
    在 ToB系统的业务场景中,经常有厂家需要将原始JSON数据,用于请求体传参,或者响应体对比等业务场景。对应Metersphere中接口自动化,CSV数据驱动数据包含JSON结构内容,用......
  • 千锋Node.js学习笔记
    千锋Node.js学习笔记目录千锋Node.js学习笔记写在前面1.认识Node.js2.NVM3.NPM4.NRM5.NPX6.模块/包与CommonJS7.常用内置模块1.url2.querystring3.http4.跨域j......