输出所有大小写字符的组合

看到一道Yelp面试题,给定一个字符串,里面只有小写字母和数字,输出包含所有大小写字母的组合,不改变字符顺序。比如"a2c",那我们输出"a2c", "A2c", "a2c", "a2C"

使用一个简单的递归加回溯就可以了

public static void main(String[] args) {        
    List<String> res = new ArrayList<>();
    String s = "a2c";
    StringBuilder sb = new StringBuilder();
    char[] arr = s.toCharArray();        
    dfs(res, arr, 0);
    for (String str : res) System.out.println(str);
}

private static void dfs(List<String> res, char[] arr, int pos) {
    res.add(String.valueOf(arr));        
    for (int i = pos; i < arr.length; i++) {
        if (arr[i] <= 'z' && arr[i] >= 'a') {                
            arr[i] = Character.toUpperCase(arr[i]);
            dfs(res, arr, i + 1);
            arr[i] = Character.toLowerCase(arr[i]);        
        }
    }
}

 

 

  

posted @ 2016-04-05 10:32  YRB  阅读(1098)  评论(0编辑  收藏  举报