LeetCode - BackTracking - Letter Case Permutation

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 between `1` and `12`.
• `S` will consist only of letters or digits.

```class Solution {     public List<String> letterCasePermutation(String S) {         List<String> results = new ArrayList<String>();         getCombinations(0,results,S,"");         return results;     }          public void getCombinations(int str_len, List<String> results, String S, String current) {                 if (str_len == S.length()){             results.add(current);             return;         }         char c = S.charAt(str_len);         if(Character.isLetter(c)){             getCombinations(str_len+1,results,S,current+Character.toLowerCase(c));             getCombinations(str_len+1,results,S,current+Character.toUpperCase(c));         }else{             getCombinations(str_len+1,results,S,current+c);         }     } }```