输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

输入描述:

输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

1、思路

我们求整个字符串的排列,可以看成两步:首先求所有可能出现在第一个位置的字符,即把第一个字符和后面所有的字符交换。如下图所示:

上图就是分别把第一个字符a和后面的b、c等字符交换的情形。首先固定第一个字符,求后面所有字符的排列。这个时候我们仍把后面的所有字符分为两部分:后面的字符的第一个字符,以及这个字符之后的所有字符。然后把第一个字符逐一和它后面的字符交换。

第一步是确定第一个位置的字符,就是第一个位置与后边的所有字符进行交换。

第二步,就是对除了第一个位置的后边所有位置的字符进行相同处理;直至剩下一个字符,打印;

具体的算法流程如下

递归的出口,就是只剩一个字符的时候,递归的循环过程,就是从每个子串的第二个字符开始依次与第一个字符交换,然后继续处理子串,如果有重复的,然后对结果使用set去重就可以了

2. 代码:

  

推荐阅读:

★ 求职经验:点这里

★ 算法刷题:点这里

★ 投资理财:点这里

★ AI很简单:

★ 扫盲科普:点这里

♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠

js字符串的字典序_27. 字符串的排列相关推荐

  1. n个字符串按照字典序排列

    题目描述 给定n个字符串,请对n个字符串按照字典序排列. 输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母. 输出描述: ...

  2. 【20190405】算法-输入一个字符串,按字典序打印出该字符串中字符的所有排列

    方法一:利用递归 利用递归求全排列的过程真的很难理解,先把代码贴上来吧 function Permutation(str) {// write code hereif(!str){return str ...

  3. JS数组、对象、字符串常用方法汇总

    JS数组.对象.字符串常用方法汇总 前言 数组常用方法 Array.prototype.slice(start, end) Array.prototype.map() Array.prototype. ...

  4. Leetcode.1641 统计字典序元音字符串的数目

    题目链接 Leetcode.1641 统计字典序元音字符串的数目 Rating : 1519 题目描述 给你一个整数 n,请返回长度为 n.仅由元音 (a, e, i, o, u)组成且按 字典序排列 ...

  5. js判断是否包含指定字符串

    CreateTime--2017年2月28日09:37:06 Author:Marydon js判断是否包含指定字符串 var inputValue = "thunder://piaohua ...

  6. js 判断字符串是否包含某字符串

    2019独角兽企业重金招聘Python工程师标准>>> js 判断字符串是否包含某字符串,String对象中查找子字符,indexOf var Cts = "bblText ...

  7. 【JS】JS中数值型字符串相加变成拼接字符串的解决方法

    [JS]JS中数值型字符串相加变成拼接字符串的解决方法 参考文章: (1)[JS]JS中数值型字符串相加变成拼接字符串的解决方法 (2)https://www.cnblogs.com/xsjs/p/1 ...

  8. 在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码?

    在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码? Posted on 2008-07-13 12:00 尹合磊 阅读(1902) 评论(0)  编辑 收藏 所属分类: ASP.N ...

  9. 算法练习day13——190401(前缀树、贪心策略拼接字符串使字典序最小)

    1.前缀树(Trie Tree) 1.1 字符串生成前缀树的过程 字母是填在路上的,不是填在节点上的. 首先是一个空的头结点: 加入"abc"到这棵树中: 头结点有到a的路吗?没有 ...

最新文章

  1. 《Redis设计与实现》之第七章:压缩列表
  2. 南非的5DT数据手套使用说明
  3. xvfb-run: error: xauth command not found 解决方式
  4. 云炬随笔20211017(1)
  5. Swift之父Chris Lattner将从Apple离职,加入特斯拉
  6. android引用另一个项目作为library错误
  7. 在服务器托管中asp***的防范注意些什么?
  8. 【D】吴恩达的二八定律:80%的数据+20%的模型=更好的机器学习
  9. Python yield 的基本概念和用法
  10. 消息队列---RabbitMQ深入研究(含Springboot+RabbitMQ整合)
  11. Qt数据库集成应用封装
  12. 共享计算机管理员权限设置,有共享文件夹。怎么从局域网取得管理员权限
  13. python异步请求aiohttp_利用aiohttp制作异步爬虫
  14. [gdc13]dx11效率优化
  15. 新一代云上基础技术和架构分论坛
  16. 浅谈AM5728裸板调试
  17. iOS中Keychain保存用户名和密码
  18. 三位代表中国科技圈的85后技术男,他们眼中的AI是什么?
  19. Noteability的一些使用小技巧
  20. [SQL Server玩转Python] 二.T-SQL查询表格值及Python实现数据分析

热门文章

  1. 程序员每天少吃===活120岁
  2. 10W 赞的程序员高薪职业建议
  3. 2019北妈和你:活着就意味必须要做点什么,请好好努力
  4. b700a怎么连蓝牙_小身材有大功能,小米蓝牙耳机AirDots青春版初体验
  5. 你不知道的BAT大数据面试题
  6. 为什么unity 安装完模块还是找不到sdk_Unity填坑笔记(四)——移植UWP平台
  7. 原F1000Prime推荐:ACE2泛癌分析图谱(TCGA数据库挖掘)
  8. fcpx插件Title Pop:78个可自定义的Final Cut Pro X动画标题+ 2个额外背景
  9. mysql 无法启动 查看原因_Mysql服务无法启动问题
  10. python 表格查询_python单表查询