784. 字母大小写全排列

130 阅读1分钟

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);
        }
    }
}