欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

1、LeetCode784 字母大小写全排列

发布时间:2025/3/19 编程问答 18 豆豆
生活随笔 收集整理的这篇文章主要介绍了 1、LeetCode784 字母大小写全排列 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

LeetCode784 字母大小写全排列

给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。

示例:
输入:S = “a1b2”
输出:[“a1b2”, “a1B2”, “A1b2”, “A1B2”]

输入:S = “3z4”
输出:[“3z4”, “3Z4”]

输入:S = “12345”
输出:[“12345”]

文章目录

  • LeetCode784 字母大小写全排列
  • 回溯法
  • 深度优先遍历

回溯法

class Solution {List<String> ans=new LinkedList<>();public List<String> letterCasePermutation(String s) {char[] chs=s.toCharArray(); help(chs,0);return ans;}public void help(char[] chs,int start){ans.add(new String(chs));for(int i=start;i<chs.length;i++){if(chs[i]>='0' && chs[i]<='9'){continue;}else if(chs[i]>='a' &&chs[i]<='z'){//当前小写字母,要转变为大写字母,所以减32chs[i]-=32;help(chs,i+1);//回溯chs[i]+=32;}else{//当前大写字母,要转变为小写字母,所以加32chs[i]+=32;help(chs,i+1);//回溯chs[i]-=32;}}} }

深度优先遍历

class Solution {List<String> ans=new LinkedList<>();public List<String> letterCasePermutation(String s) {char[] chs=s.toCharArray(); help(chs,0,chs.length);return ans;}public void help(char[] chs,int start,int len){if(start==len){ans.add(new String(chs));return;}help(chs,start+1,len);if(Character.isLetter(chs[start])){//start位置如果是小写则变成大写,大写变成小写chs[start]^=32;help(chs,start+1,len);}} }

总结

以上是生活随笔为你收集整理的1、LeetCode784 字母大小写全排列的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。