1、LeetCode784 字母大小写全排列
生活随笔
收集整理的这篇文章主要介绍了
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 字母大小写全排列的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 5、计算机网络物理层和数据链路层
- 下一篇: 6、计算机网络层