0784. Letter Case Permutation (M)
Letter Case Permutation (M)
题目
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:
S
will be a string with length between1
and12
.S
will 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);
}
}
}