784-字母大小写全排列

784-字母大小写全排列

力扣784

https://leetcode-cn.com/problems/letter-case-permutation/

本题和1219 黄金矿工类似,属于枚举型回溯

枚举:当数字时进行一次选择、递归、撤销,当字母时进行两次(一次大写一次小写)选择、递归、撤销

这题有说仅由数字和字母组成,所以直接判断数字比较简单,else为字母

总体比较简单,直接贴核心代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public List<String> letterCasePermutation(String S) {
backtrace(S, 0, new StringBuilder());
return res;
}

private List<String> res = new ArrayList<>();
public void backtrace(String s, int index, StringBuilder path){
//结束条件:path.length == s.length
if (path.length() == s.length()){
res.add(path.toString());
return ;
}
//开始枚举回溯
if (Character.isDigit(s.charAt(index))){ //数字
path.append(s.charAt(index)); //选择
backtrace(s, index + 1, path); //递归
path.deleteCharAt(path.length() - 1); //撤销
}else { //字母
//大写
path.append(String.valueOf(s.charAt(index)).toUpperCase()); //选择
backtrace(s, index + 1, path); //递归
path.deleteCharAt(path.length() - 1); //撤销
//小写
path.append(String.valueOf(s.charAt(index)).toLowerCase()); //选择
backtrace(s, index + 1, path); //递归
path.deleteCharAt(path.length() - 1); //撤销
}
}

其他回溯系列题目可以点击这里

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×