输入一个字符串,打印出该字符串中字符的所有排列。

你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。

示例:

输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]

限制:

1 <= s 的长度 <= 8

关于深度优先遍历的考察,这个题目很典型。虽然刚开始已经把递归树画出来了,但是在写代码时候还是没有写出来。关键是理解:字符串的全排列,要确定好每个位置上的字符。对于重复的结果使用set进行去重。

方法一:未进行记忆优化

如何确定好每个位置上的字符,循环加递归:

class Solution(object):def permutation(self, s):""":type s: str:rtype: List[str]"""ans = set()vis = [False]*len(s)def dfs(s,cur,curs,ans):if cur==len(s):ans.add(curs)returnfor i in range(len(s)):if not vis[i]:vis[i]=Truedfs(s,cur+1,curs+s[i],ans)vis[i]=Falsedfs(s,0,'',ans)res =[val for val in ans]return res

方法二:优化

【剑指offer38】全排列问题-递归的运用相关推荐

  1. 剑指offer38题

    问题描述 剑指offer38题 问题分析 最直观的想法就是使用深度搜索遍历每一个分支,找出所有组合,但是此问题要求结果中的字符串不重复,这就需要我们在使用DFS时进行剪枝,即是在每一层将重复的字符去除 ...

  2. 剑指offer里的递归与循环

    文章目录 递归怎么解 根据前序中序序列重建二叉树 从尾到头打印链表 递归产生的问题 Fibonacci数列 跳台阶 变态跳台阶 总结 其实这是第二遍刷剑指offer,发现已经忘得差不多了-虽然说有印象 ...

  3. 《剑指offer》非递归法判定二叉树是否是对称的

    题目:请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 解析:该非递归法有点傻傻的,思想是利用队列进行层次遍历.然后翻转该二叉树,再层次遍 ...

  4. 剑指offer38 数字在排序数组中出现的次数

    这种方法没用迭代,而是使用了循环的方式 class Solution { public:int GetNumberOfK(vector<int> data ,int k) {if(data ...

  5. 剑指offer第二版答案详细版(带详细解题思路)

    1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...

  6. 《剑指offer》内容总结

    (1)剑指Offer--Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常 ...

  7. ++递归 字符串全排列_剑指 Offer 38. 字符串的排列

    剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...

  8. 字符串全排列算法_C#版_剑指OFFER

    字符串全排列算法_C#版_剑指OFFER 题目描述 ​题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组. 例如输入字符串ABC,则输出由字符A, ...

  9. 剑指Offer #04 重建二叉树(递归)

    题目来源:牛客网-剑指Offer专题 题目地址:重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序 ...

最新文章

  1. Web Service 概念
  2. cxf restful
  3. 重启jboss出现问题:端口被占用
  4. [Django]模型学习记录篇--基础
  5. python2.7入门---内置函数
  6. java8中stream中的任务拆分
  7. 字体系列之字体大小(CSS、HTML)
  8. 功能接口 java8_Java 8功能接口
  9. python中reversed函数,Python3
  10. 生产环境中CentOS5.6下配置LVS(续)
  11. 计算机网络之网络安全基础
  12. ddt数据驱动常见的用法【多测师_王sir】
  13. origin三图合一_利用Origin将多组拟合图放在一张表中的方法
  14. 查看页面密码框明文密码
  15. 红蜘蛛不受控制解决方案
  16. mysql57免安装教程_mysql5.7免安装版配置教程
  17. 应该怎么提升4G工业路由器的无线信号?
  18. 小米路由器 你的连接不是专用连接
  19. shell 关闭电脑wifi_笔记本通过命令配置wifi win7系统
  20. C#连接Access数据库(详解)

热门文章

  1. ko 绑定html,WeX5的正确打开方式(3)——绑定机制
  2. 复杂科学在创客教学研究中的应用
  3. 地上半地下储罐的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. 励志!从中专生到教授、国家杰青,近日,他又当选院士!
  5. 小程序即将上线,现在就可以开发啦
  6. 1108 String复读机(JAVA)
  7. 让您的照片动起来first motion model(1)-关键点抽取模型深度解析
  8. 新能源汽车行业研究报告
  9. 怀旧服湖畔镇服务器位置,蓝贴:怀旧服合服的服务器!
  10. Hadoop生态圈(十五)- HDFS Trash垃圾回收详解