剑指offer(十五):字典序全排列_数组最小字典序是什么意思-程序员宅基地

题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
分析
字典序算法解析:
最小字典序是数组从小到大的排序,最大字典序是最小字典序的倒序。
找到下一个字典序的步骤如下:
1)定义一个指针指向数组的最后一个数,从右向左找到第一个小于自己的右侧相邻元素的元素ai,以ai开始向右找大于ai的数中最小的ak;
2)交换ai、ak;
3)将ai右侧的数字集翻转

//如果输入的字符串内容是数字
 function max(arr) {
        arr.sort((a, b) => {
            return a - b
        });
        var tempArr = [...arr].reverse();
        var index = arr.length - 1;
        var temp = 0;
        while (String(arr) != String(tempArr)) {  //数组是引用类型,如果用arr==tempArr比较的是引用,永远为false

            index = arr.length - 1;
            while (index--) {
                if (arr[index] < arr[index + 1]) {
                    temp = Math.min(...arr.slice(index).filter((item) => item > arr[index]));
         
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m16041902/article/details/101686388

智能推荐

【HarmonyOS HiSpark IPC DIY Camera试用连载4 】 鸿蒙OS内核liteos-a如何启动第一个用户进程init_lite_lite_user_sec_entry原理-程序员宅基地

文章浏览阅读2.6k次。【HarmonyOS HiSpark IPC DIY Camera试用连载4 】 鸿蒙OS内核如何启动第一个用户进程init_lite1. 鸿蒙OS编译知识2. 从编译过程看鸿蒙OS代码结构3. 第一个用户态进程init_lite4. Init_lite是如何被kernel调用的?1. 鸿蒙OS编译知识(原理引自中科创达OpenHarmony研究组 鸿蒙OS开源代码精要解读之——init)OpenHarmony源码编译系统使用了google开发的gn工具以及ninjia。这二者结合起来比传统的make_lite_user_sec_entry原理

TheiSfM - Win7/VS2015/CMake_theia-sfm-程序员宅基地

文章浏览阅读1k次。Instruction for building TheiaSfM._theia-sfm

linux下安装mysql-5.7.25详细步骤_mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz下载-程序员宅基地

文章浏览阅读458次。第一步:下载进入到mysql官网下载自己对应版本的mysql,下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads我这里下载mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz版本也可以进入linux后用命令下载wget https://cdn.mysql.com//Downloads..._mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz下载

HDU 4348 SPOJ TTM To the moon(操作建树)_to the moon操作-程序员宅基地

文章浏览阅读388次。题意:给出一个序列,四种操作C l r d: Adding a constant d for every {Ai | l <= i <= r}, and increase the timestamp by 1, this is the only operation that will cause the timestamp increase. Q l r: Querying the current_to the moon操作

基于docker-compose做版本升级_升级 docker-compose-程序员宅基地

文章浏览阅读283次。将mysql的镜像导出成tar文件到当前文件夹。docker-compose.yml文件。#离线做mysql升级。_升级 docker-compose

出现java.lang.NumberFormatException: null的错我如何解决_numberformatexception null-程序员宅基地

文章浏览阅读469次。首先这是show.jsp pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><% request.setCharacterEncoding("utf-8"); String name = r_numberformatexception null

随便推点

0012-用OpenCV批量读取图片的三种方法-程序员宅基地

文章浏览阅读3.3k次。有时我们需要批量读取图片,所以我们有必要知道怎么在OpenCV开源环境下批量读取图片!批量读取图片的关键是如何让程序知道文件夹下图片的名字!第一种方法:这种方法只针对图片名字有规律的情况,比如:***(0).jpg***(1).jpg***(2).jpg***(3).jpg..................源代码如下:代码中用到的图片下载链接为:http://pan.b..._opencv批量读取图片

.bat脚本基本命令语法_bat脚本串口发送-程序员宅基地

文章浏览阅读1.1k次。目录批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2、ECHO 和 @ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和 : 9、FIND 10、START 11、assoc 和 ft..._bat脚本串口发送

自己实现一个队列(Java)_java实现一个队列 匀速处理-程序员宅基地

文章浏览阅读1.5k次。思路:1、链表实现,不用考虑扩容问题2、节点维护next指针,每次删除元素,删除头结点,插入元素队尾插入代码:package com.datastructure.stackqueue;/** * 实现一个栈,自定义栈,用链表实现,方便扩容 */public class DefineQueue<T> { private Node<T> ..._java实现一个队列 匀速处理

QA面试题-程序员宅基地

文章浏览阅读880次,点赞19次,收藏17次。猴子测试是一种用于测试应用程序的黑盒测试,通过提供随机输入来检查系统行为,例如检查系统是否崩溃。测试主管通常会准备它,或者测试经理,文档的重点是描述要测试什么,如何测试什么时候测试,谁来做什么测试。我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。猴子测试和即席测试都遵循非正式的方法,但是在猴子测试中,我们不需要对软件有深入的了解。它是最终测试,同时执行功能性和非功能性测试。

UniCode转UTF8-程序员宅基地

文章浏览阅读79次。char *UniCodeToUTF8(CString strUniCode){ LPWSTR pWstr = new wchar_t[strUniCode.GetLength() + 1]; wcscpy(pWstr, T2W((LPTSTR)strUniCode.GetString())); //获取转完后的长度 int nLen = WideCh..._utf8_ai

dfsadmin -report结果分析_dfsadmin -report详解-程序员宅基地

文章浏览阅读5.5k次。最近在搭建hadoop集群实验中,启动集群时常报错:jobtracker.info could only be replicated to 0 nodes, instead of 1查了好多资料,用了好多方式尝试解决,通过下面的命令总有找到问题所在了。原因:Configured Capacity也就是datanode 没用分配容量 [root@dev9106 bin]# ./ha_dfsadmin -report详解