首页 > 编程语言 >力扣784(java)-字母大小写全排列(中等)

力扣784(java)-字母大小写全排列(中等)

时间:2022-10-30 15:34:09浏览次数:39  
标签:784 java 力扣 cs 大小写 ans 字符串 下标

题目:

给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。

返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。

 

示例 1:

输入:s = "a1b2"
输出:["a1b2", "a1B2", "A1b2", "A1B2"]
示例 2:

输入: s = "3z4"
输出: ["3z4","3Z4"]
 

提示:

  • 1 <= s.length <= 12
  • s 由小写英文字母、大写英文字母和数字组成

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/letter-case-permutation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

一、用List模拟

有思路,但是写不出来完整的代码

参考@【爪哇缪斯】:https://leetcode.cn/problems/letter-case-permutation/solution/zhua-wa-mou-si-by-muse-77-7jb8/

首先将原字符串 s 放进结果ans中,然后再从头开始遍历字符串 s :

  • 当发现下标为 i 处是数字时,就跳过;
  • 当发现下标为 i 处是英文字母时,就进行大小写的转换,将本次转换后的整个字符串加入到ans中。

直到i 到达字符串的末尾表示字符串 s 遍历完成,返回ans。结合图进行理解。

 

 java代码:

 1 class Solution {
 2     public List<String> letterCasePermutation(String s) {
 3         List<String> ans = new ArrayList<>();
 4         //先将原字符串添加进结果中
 5         ans.add(s);
 6         //外层循环控制遍历的字符下标
 7         for(int i = 0; i < s.length(); i++){
 8             //如果是数字就跳过
 9             if(s.charAt(i) < 'A') continue;
10             int n = ans.size();
11             //内层循环控制改变的字符串下标
12             for(int j = 0; j < n; j++){
13                 char[] cs = ans.get(j).toCharArray();
14                 //直接定位在是字符的下标进行大小写转换
15                 //将小写转换成大写
16                 if(cs[i] >= 'a'){
17                     cs[i] = (char)(cs[i] - 32);
18                 }else{
19                     //将大写转换成小写
20                   cs[i] = (char)(cs[i] + 32);
21                 }
22                 //将本次转换后的字符串加入到结果中
23                 ans.add(new String(cs));
24             }
25         }
26         return ans;
27     }
28 }

 

标签:784,java,力扣,cs,大小写,ans,字符串,下标
From: https://www.cnblogs.com/liu-myu/p/16841386.html

相关文章

  • Java 从入门到放弃11 - 《Maven》
    说点题外话,没想到突然又重拾更新,在这期间学习了java的许多知识,还补充了sql语句,数据库相关的内容,由于时间关系,中间部分的内容都没有做相应笔记和博客,因为sql的语句还有中间......
  • java多线程-线程安全集合
    CopyOnWriteArrayListCopyOnWrite思想就是将原来的数据copy一份出来修改,然后把修改后的数据替换原来的数据。在setArray之前并发读到的还是旧数据,弱一致性。publi......
  • java spring项目中使用设计模式和函数式编程的思想去除业务逻辑中的if else判断
    如果你开发项目时对项目之后的发展很清晰但仍陷入了为什么要用设计模式替换ifelse的疑问时就说明你项目的体量不需要用设计模式答案只在问题提出之后有意义策略和状......
  • Java_JVM探究
    请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新?什么是OOM,什么是栈溢出StackOverflowError?怎么分析?JVM的常用调优参数有哪些?内存快照如何抓取,怎么分析Dump文件?谈......
  • java.lang.NoClassDefFoundError
    问题描述:最近对JavaWeb进行了简单复习,在对照以往笔记写好了一个Servlet服务时发现无法启动该项目服务。针对java.lang.NoClassDefFoundError:javax/servlet/http/HttpSer......
  • JavaScript – Web Worker
    前言在上一篇<<单线程与执行机制>> 中,我们提到了WebWorker.它的诞生是为了解决JS主线程执行耗时计算时,导致UI无法及时更新的卡死现象.它的解决思路是把......
  • 784. 字母大小写全排列
    784.字母大小写全排列给定一个字符串s,通过将字符串s中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。以任意顺序返回输出......
  • javaScript简介和javaScript发展史
    *概念:一门客户端脚本语言*运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎*脚本语言:不需要编译,直接就可以被浏览器解析执行了*功能:*......
  • Java 使用StringBuilder组装字符串
    下面这个例子来自SpringBoot源码,这里是要打印程序启动的时间这样的字符串,需要拼装的信息有程序名字,启动时长,JVM时长。privateStringBuildergetStartedMessage(StopWatc......
  • Java 读取 Excel 模板,将数据填入Excel表格,后转换为PDF文件(实用)
    前言我在互联网上冲浪的时候,看到有的小伙伴说可以使用​​Excel​​模板,来实现这个功能。这个方式我是喜欢的~(ps:因为不要用代码去画表格,是真的舒服~)大致流程如下:编写一个E......