
public class Num784字母大小写全排列 {
private List<String> ans = new ArrayList<>();
public List<String> letterCasePermutation(String s) {
if (s == null || s.length() == 0) {
return ans;
}
char[] arr = s.toCharArray();
dfs(arr, 0);
return ans;
}
private void dfs(char[] arr, int i) {
if (i == arr.length) {
ans.add(new String(arr));
return;
}
//不改变字母的路径
dfs(arr, i + 1);
if (Character.isLetter(arr[i])) {
//大小写转化
arr[i] ^= 32;
//改变字母后的路径
dfs(arr, i + 1);
}
}
}