1 题目描述

2 解题思路:回溯

如果解决一个问题有多个步骤,每一个步骤有多种方法,题目又要我们找出所有的方法,可以使用回溯算法;
        回溯算法是在一棵树上的 深度优先遍历(因为要找所有的解,所以需要遍历);
        组合问题,相对于排列问题而言,不计较一个组合内元素的顺序性(即 [1, 2, 3] 与 [1, 3, 2] 认为是同一个组合),因此很多时候需要按某种顺序展开搜索,这样才能做到不重不漏。

class Solution(object):def letterCasePermutation(self, S):ret=[]def dfs(lst,tmp):if(len(tmp)==1):if(tmp[0]>='0' and tmp[0]<='9'):lst1=lst.copy()lst1.append(tmp[0])ret.append(lst1)else:lst1=lst.copy()lst1.append(tmp[0].upper())ret.append(lst1)lst2=lst.copy()lst2.append(tmp[0].lower())ret.append(lst2)else:if(tmp[0]>='0' and tmp[0]<='9'):lst1=lst.copy()lst1.append(tmp[0])dfs(lst1,tmp[1:])else:lst1=lst.copy()lst1.append(tmp[0].upper())dfs(lst1,tmp[1:])lst2=lst.copy()lst2.append(tmp[0].lower())dfs(lst2,tmp[1:])
'''
dfs(lst,tmp)表示,我当前已经操作完成的字符串在lst,剩余还没有操作的在tmp中
如果当前tmp只有一个元素的,那么就把排列结果放入ret数组中(根据这个元素是数字还是字母再分类讨论一次)
否则,根据tmp当前位是数字还是字母,分类讨论向后递归
'''        dfs([],S)res=[]for i in ret:res.append(''.join(i))
#ret部分是一个二维数组,需要join一下return(res)

文巾解题 784. 字母大小写全排列相关推荐

  1. 77.组合 | 40.组合总和II | 39.组合总和 | 784.字母大小写全排列

    77.组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合. 你可以按 任何顺序 返回答案. 示例 1: 输入:n = 4, k = 2 输出: [   [2,4], ...

  2. LeetCode 784. 字母大小写全排列

    784. 字母大小写全排列 [回溯法] class Solution {// 回溯 4:30 6int n;StringBuilder sb = new StringBuilder();List< ...

  3. 【784. 字母大小写全排列】

    来源:力扣(LeetCode) 描述:   给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串. 返回 所有可能得到的字符串集合 .以 任意顺序 返回输出. 示 ...

  4. LeetCode 784. 字母大小写全排列(位运算回溯)

    1. 题目 给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串.返回所有可能得到的字符串集合. 示例: 输入: S = "a1b2" 输出: [&q ...

  5. 784.字母大小写全排列

    给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串.返回所有可能得到的字符串集合. 示例: 输入: S = "a1b2" 输出: ["a1 ...

  6. 784. 字母大小写全排列

    链接:https://leetcode-cn.com/problems/letter-case-permutation/ 题解:如果是字母,存在改为变为大/小写,和当前情况dfs往下情况 这一类涉及排 ...

  7. Java——字母大小写全排列

    题目链接 字母大小写全排列 题目描述 给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串. 返回 所有可能得到的字符串集合 .以 任意顺序 返回输出. 题目示例 ...

  8. 文巾解题 面试题 01.04. 回文排列

    1 题目描述 2 解题思路 2.1 哈希表 创建一个哈希表,记录每个元素出现的次数.如果出现次数为奇数的元素只有一个或者没有,那么就是一个回文排列 class Solution:def canPerm ...

  9. 文巾解题 15. 三数之和

    1 题目描述 2 解题思路 2.1 使用两数之和函数 这种做法目前超时了,如果大家有想到合适的减时间/剪枝的方法,欢迎私信or评论~ 两数之和的方法见文巾解题 1. 两数之和_刘文巾的博客-CSDN博 ...

最新文章

  1. Schmid Telecom选择StoreAge SVM实现数据镜像保护
  2. VA01保存后都更新了什么表
  3. linux之SQL语句简明教程---UNION ALL
  4. 华北科技学院计算机期末考试,华北科技学院 专业计算机 考试专用
  5. ClickedOnce部署方法
  6. html+css如何提升,用好这20个css技巧快速提升你的CSS技能
  7. 129 MySQL数据类型(重要)
  8. Atitit 计算机通信技术概要 目录 1. OSI参考模型将整个协议垂直地分为7个层次 : 1 1.1. 通信类别 2 2. 传输方式 计算机通信可分为直接式和间接式两种。 2 2.1. 1)直
  9. ora257 linux,ORA-00257解决
  10. 发烧游戏机型的计算机制配单,万元主机配置发烧级游戏设计渲染配置单
  11. vue里面使用echarts实现根据浏览器屏幕大小自适应
  12. substrate介绍
  13. 中国睫毛生长液行业市场供需与战略研究报告
  14. 快速阶乘算法python_python实现N阶乘的算法
  15. 案例-使用python实现基于opencv的形状识别
  16. Python编程之Ubuntu下信号模块signal
  17. windows画图常用函数
  18. 使用Pyqt5制作GUI界面,并使用pyinstaller打包成exe文件
  19. C语言简单的键盘玩扫雷小游戏(完结)
  20. 宝文理计算机分数位次,2017高考位次换算(2019高考分数线排名)

热门文章

  1. 使用wireshark分析tcp/ip报文之报文头
  2. C++中的空类与空结构体大小
  3. 逻辑分析仪上位机DSview的简单触发设置
  4. Leetcode232使用栈实现队列
  5. leetcode 200.岛屿数量 c代码
  6. 计算机在音乐教学的应用论文开题报告,音乐教育论文开题报告(范文详解)
  7. java自动生成代码原理_原来这就是Java代码生成器的原理啊,太简单了
  8. 环状同步造成的死锁问题
  9. 互斥信号量解决任务间资源共享问题
  10. ubuntu android2.3 emulator,Android Studio 2.3 Ubuntu 16.10 emulator do not start