输出所有大小写字符的组合
看到一道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]); } } }