784. Letter Case Permutation

文章目录

  • 1 题目理解
  • 2 回溯

1 题目理解

Given a string S, we can transform every letter individually to be lowercase or uppercase to create another string.

Return a list of all possible strings we could create. You can return the output in any order.
输入:字符串
输出:字符串可能的变形
规则:每一个位置上的字符都可能变为大写或者小写。非字母的保持原字母。

Example 1:

Input: S = “a1b2”
Output: [“a1b2”,“a1B2”,“A1b2”,“A1B2”]

2 回溯

每个字符位,可能是大写,也可能是小写。回溯递归即可实现。

class Solution {private String S;private List<String> answer;public List<String> letterCasePermutation(String S) {this.S = S;answer = new ArrayList<String>();dfs(0,"");return answer;}private void dfs(int index,String str){if(index >= S.length()){answer.add(str);}else{char ch =  S.charAt(index);if(ch>='0' && ch<='9'){dfs(index+1,str+ch);}else if(ch>='A' && ch<='Z'){dfs(index+1,str+ch);ch += 32;dfs(index+1,str+ch);}else if(ch>='a' && ch<='z'){dfs(index+1,str+ch);ch -= 32;dfs(index+1,str+ch);}}}
}

第二种方式:可以使用二进制位。对于每一位有两种选择的情况可以用二进制位来解决。

class Solution {public List<String> letterCasePermutation(String S) {int charCount = 0;for(char ch : S.toCharArray()){if(Character.isLetter(ch)){charCount++;}}List<String> answer = new ArrayList<String>();int max = (1<<charCount)-1;for(int i = 0;i<=max;i++){int j = 0;StringBuilder s = new StringBuilder();for(char ch : S.toCharArray()){if(Character.isLetter(ch)){if(((i>>j) &1)==1){s.append(Character.toLowerCase(ch));}else{s.append(Character.toUpperCase(ch));}j++;}else{s.append(ch);}}answer.add(s.toString());}return answer;}
}

此处用StringBuilder比String快了不好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一百期:Java架构师:高并发下的流量控制

这个时候如果不做任何保护措施&#xff0c;服务器就会承受很大的处理压力&#xff0c;请求量很高&#xff0c;服务器负载也很高&#xff0c;并且当请求超过服务器承载极限的时候&#xff0c;系统就会崩溃&#xff0c;导致所有人都不能访问。 作者&#xff1a;IT技术分享 这个…

DB2常用傻瓜问题1000问(之一)

1.DB2产品的级别有那些?企业版的 ENTERPRISE EDITION工作组版 WORK GROUP EDITION企业扩展版 ENTERPRISE EXTEND EDEDITION个人版的 PERSONAL EDITION卫星版的 SATELLITE EDITION微型版的 EVERYPLACE2.可以连接到DB2数据库的产品有哪些?  DB2客户…

OpenCV学习笔记:矩阵的掩码操作

矩阵的掩码操作很简单。其思想是&#xff1a;根据掩码矩阵&#xff08;也称作核&#xff09;重新计算图像中每个像素的值。掩码矩阵中的值表示近邻像素值&#xff08;包括该像素自身的值&#xff09;对新像素值有多大影响。从数学观点看&#xff0c;我们用自己设置的权值&#…

spring mvc学习(15)Referenced file contains errors

SSM项目中出现Referenced file contains errors (http://www.springframework.org/schema/mvc/spring-mvc-3.0.xs 2019-01-20 22:37:06 薛定谔小猫Historia 阅读数 468更多 分类专栏&#xff1a; java及其框架学习 版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循…

996. Number of Squareful Arrays

文章目录1 题目理解2 回溯分析1 题目理解 Given an array A of non-negative integers, the array is squareful if for every pair of adjacent elements, their sum is a perfect square. Return the number of permutations of A that are squareful. Two permutations A1…

[置顶] export命令-linux

export 命令 功能说明&#xff1a; 设置或显示环境变量。 语 法&#xff1a; export [-fnp][变量名称][变量设置值] 补充说明&#xff1a; 在shell中执行程序时&#xff0c;shell会提供一组环境变量。 export可新增&#xff0c;修改或删除环境变量&#xff0c;供后续执行的程…

商业业智能的概念

商业业智能是什么?简而言之,它是能够帮助用户对自身业务经营做出正确明智决定的工具。一般现代化的业务操作,通常都会产生大量的数据,如订单、库存、交易帐目、通话记录、及客户资料等。如何利用这些数据增进对业务情况的了解,帮助我们在业务管理及发展上作出及时、正确的判断…

spring mvc学习(16)Could not publish server configuration for Tomcat v8.0 Server at localhost.

这个问题本质是我们有多个重名项目&#xff0c;为什么我们会有多个重名项目&#xff0c;其实一般都是我们删除以前的项目&#xff0c;然后再把它重新导进eclipse时以前的项目删除不彻底造成的&#xff0c;以前的项目在"Servers"里面的"server.xml"文件下的…

产品管理:启示录 - 特约客户、产品验证、原型测试

• 如何挑选有潜力的产品&#xff1f; • 如何证明产品设计符合用户需求&#xff1f; • 如何确认产品设计满足三个基本条件&#xff1f; • 如何运用敏捷方法管理产品&#xff1f; • …… 这是《启示录》上说的一些话&#xff0c;去年看了一下&#xff0c;和团队分享了其中几…

37. Sudoku Solver

文章目录1 题目理解2 回溯1 题目理解 Write a program to solve a Sudoku puzzle by filling the empty cells. A sudoku solution must satisfy all of the following rules: Each of the digits 1-9 must occur exactly once in each row. Each of the digits 1-9 must oc…

spring mvc学习(17)Intellij IDEA创建maven项目无java文件问题

1.解决之前项目结构如下&#xff1a; 2.选择File->Project Structure... 3.选择Modules选项卡下面的Sources项&#xff0c;在main文件夹上右键&#xff0c;选择New Folder...并点击OK   4.输入要创建的文件夹名称java&#xff0c;并点击OK继续 5.在创建好的java文件夹上右…

SQL Server 2005中的ROW_NUMBER和RANK

下面介绍两个SQL Server 2005 中的新东东&#xff1a;ROW_NUMBER返回结果集分区内行的序列号&#xff0c;每个分区的第一行从 1 开始。语法&#xff1a;ROW_NUMBER ( ) OVER ( [ <partition_by_clause> ] <order_by_clause> )备注&#xff1a;ORDER BY 子句可确…

day33-1 线程队列

线程队列 线程队列就是一个普通的容器&#xff0c;使用import queue&#xff0c;用法与进程Queue一样 先进先出 from queue import Queueq Queue() q.put(2) q.put(a) q.put((2, 1))print(q.get()) # 2 print(q.get()) # a print(q.get()) # (2, 1) 后进先出&#xff1a;…

51. N-Queens

文章目录1 题目理解2 回溯2.1 直观解法2.2 按行遍历1 题目理解 The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other. Given an integer n, return all distinct solutions to the n-queens puzzle. …

第一百零一期:如何处理ASP .NET Core中的cookie?

本文介绍了ASP.NET Core Web应用程序中利用cookie存储和检索针对特定用户的信息。 作者&#xff1a;布加迪编译 【51CTO.com快译】cookie是通常用于存储有关用户信息的一条数据&#xff0c;存储在用户的计算机上。在大多数浏览器中&#xff0c;每个cookie都存储为一个小文件&a…

男生给女生最牛B的告白

1、别以为平胸就说明自己有脑&#xff0c;别以为自己笨就一定丰满。基本上没有男人会笨到认为脑子和胸部有任何联系. 2、爱不爱你&#xff1f;别tm一直问偶这个问题。什么也不说&#xff0c;你丫哭&#xff1b;犹豫了一会说&#xff0c;你丫说不坚决&#xff1b;脱口而出你丫又…

四、COSMIC功能点实操

一、识别功能处理 二、识别功能处理的数据对象 三、识别数据对象的数据移动 四、要点规则 1.消息提示&#xff1a;一个功能处理的所有消息提示作为一个X&#xff0c;如果涉及到动态的提示单独作为一个X 2.分析功能是新增的还是修改的&#xff0c;新增功能的数据运算都不算功能点…

第一百零二期:5G套餐到底该不该换?看完你就明白啦!

日前&#xff0c;三大运营商正式宣布5G商用&#xff0c;并公布了各自的5G资费套餐。毫无意外&#xff0c;正式公布出来的套餐内容&#xff0c;和之前运营商内部泄露的内容完全一致。 作者&#xff1a;小枣君 日前&#xff0c;三大运营商正式宣布5G商用&#xff0c;并公布了各自…

79. Word Search

文章目录1题目理解2 回溯3 212 word search II1题目理解 Given an m x n board and a word, find if the word exists in the grid. The word can be constructed from letters of sequentially adjacent cells, where “adjacent” cells are horizontally or vertically ne…

怀念西电北门的石凳(转载)

想起1996年某个春天的清晨<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />那个被我叫做小可的女生和我坐在北门里的石凳上让我帮她讲数学&#xff5e;清晨的风清凉地流着&#xff5e;划过记忆里永远不曾尘封的忧伤&#xff5e;感…