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 29 30
| class Solution { public List<String> letterCasePermutation(String s) { List<String> resultList = new ArrayList<>(); StringBuilder sb = new StringBuilder(); dfs(resultList, sb, s, 0); return resultList; }
private void dfs(List<String> resultList, StringBuilder sb, String s, int i) { if (i == s.length()) { resultList.add(sb.toString()); return; }
char c = s.charAt(i); if (Character.isDigit(c)) { sb.append(c); dfs(resultList, sb, s, i + 1); sb.deleteCharAt(sb.length() - 1); } else { sb.append(Character.toLowerCase(c)); dfs(resultList, sb, s, i + 1); sb.deleteCharAt(sb.length() - 1); sb.append(Character.toUpperCase(c)); dfs(resultList, sb, s, i + 1); sb.deleteCharAt(sb.length() - 1); } } }
|