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 between1
and12
.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);
}
}
}