题目
Given a string S, we can transform every letter individually to be lowercase or uppercase to create another string.
Return a list of all possible strings we could create. You can return the output in any order.
Example 1:
Input: S = "a1b2"Output: ["a1b2","a1B2","A1b2","A1B2"]
Example 2:
Input: S = "3z4"Output: ["3z4","3Z4"]
Example 3:
Input: S = "12345"Output: ["12345"]
Example 4:
Input: S = "0"Output: ["0"]
Constraints:
Swill be a string with length between1and12.Swill consist only of letters or digits.
题意
给定一个字符串,其中的字母可以互换大小写,求所有可能的组合。
思路
DFS。
代码实现
Java
class Solution {public List<String> letterCasePermutation(String S) {List<String> ans = new ArrayList<>();dfs(S, 0, "", ans);return ans;}private void dfs(String S, int index, String cur, List<String> ans) {if (index == S.length()){ans.add(cur);return;}char c = S.charAt(index);if (Character.isDigit(c)) {dfs(S, index + 1, cur + c, ans);} else {dfs(S, index + 1, cur + Character.toUpperCase(c), ans);dfs(S, index + 1, cur + Character.toLowerCase(c), ans);}}}
