IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript 全排列 -> 正文阅读

[JavaScript知识库]JavaScript 全排列

一、题目

ULR
在这里插入图片描述

二、解决

1.思路

整体思路是现学现做,看了哔站上一个C语言视频,回来感觉自己可行了,就试了一个小时,然后一个小时的问题就出在两种语言…不一样。
思想:
简单来讲就是递归思想,对于一个字符串,要求他的全排列,其实就是每次将元素换到前面
例:
在这里插入图片描述
如上图可以看出,每次都是和第一个元素交换,之后便可以递归解决后续数组,(即每次都遍历依次和当前字符串第一个元素交换即可)
具体详细可以参考哔站视频(C语言视频):pickHere

2.代码

<!DOCTYPE html>
<html>

<head>
    <meta charset=utf-8>
</head>

<body>

    <script type="text/javascript">
        const _permute = string => {
            // 补全代码
            let res=[]
            function swap(str, index1, index2) {
                let arr = str.split("")
                arr[index1] = arr.splice(index2, 1, arr[index1])[0];
                str=arr.join('')
                return str;
                
            }
            let _perm = function (str, l, r) {
                if (l == r) {
                   res.push(str)
                }
                else {
                    for (let i = l; i <= r; i++) {
                        str=swap(str, l, i);  
                        _perm(str, l + 1, r)
                        swap(str, l, i)
                    }
                }
            }
            _perm(string, 0, string.length - 1)
            return res
        }
    </script>
</body>

</html>

三、总结

这道题,学会只需10分钟,找bug找了一个小时,离谱的是垃圾的自己一位string可以通过简单赋值就可以改变串中元素值,最终被无情打脸
1.js和c不同,对于string,单纯string[index]=xxx,无法改变第index索引处的值,但数组可以,通过string.split("")转数组,交换之后使用array.join("")转字符串。
2.js中函数返回值时,有时返回的是一个新的array或者string,可能不会在原有参数做改变,则要接收新的return值,需要覆盖一遍。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 13:54:34  更:2022-01-08 13:56:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:07:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码