784. Letter Case Permutation

#### QUESTION:

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.

``````Examples:
Input: S = "a1b2"
Output: ["a1b2", "a1B2", "A1b2", "A1B2"]

Input: S = "3z4"
Output: ["3z4", "3Z4"]

Input: S = "12345"
Output: ["12345"]

``````

Note:

• `S` will be a string with length at most `12`.
• `S` will consist only of letters or digits.

#### EXPLANATION:

``````void dfs(层数){
if(条件){
输出；
}
else{
左子树的处理；
dfs(层数+1)；
右子树的处理；
dfs(层数+1)；
}
}

``````

#### SOLUTION:

``````class Solution {
public ArrayList<String> letterCaseResult = new ArrayList<>();
public List<String> letterCasePermutation(String S) {
char[] chars = S.toCharArray();
letterCasePermutationHelper("",chars,0);
return letterCaseResult;
}

public void letterCasePermutationHelper(String s,char[] cs,int index) {
int tmp = index;
if(index==cs.length){
letterCaseResult.add(s);
return;
}else{
if(cs[index]<65||(cs[index]>90)&&(cs[index]<97)||cs[index]>122){
s+=cs[index];
letterCasePermutationHelper(s,cs,tmp+1);
}else{
String stmp = s+ cs[index];
letterCasePermutationHelper(stmp,cs,tmp+1);
String stmp2;
if(cs[index]>96)
stmp2 =s+(char)(cs[index]-32);
else
stmp2 =s+(char)(cs[index]+32);
letterCasePermutationHelper(stmp2,cs,tmp+1);
}

}
}
}
``````
>