0784 - Letter Case Permutation

0784 - 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. You can return the output in any order.

Examples

Input: s = "a1b2" Output: ["a1b2","a1B2","A1b2","A1B2"]

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

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

Input: s = "0" Output: ["0"]

Constraints:

s will be a string with length between 1 and 12. s will consist only of letters or digits.

Java Solution (Backtracking)

class Solution {
    public List<String> letterCasePermutation(String s) {
        List<String> results = new ArrayList<>();
        backtrack(s.toCharArray(), results, 0);
        return results;
    }
    
    private void backtrack(char[] c, List<String> results, int index) {
        results.add(new String(c));
        for(int i = index; i < c.length; i++) {
            if(Character.isAlphabetic(c[i])) {
                char temp = c[i];
                c[i] = Character.isUpperCase(c[i]) ? Character.toLowerCase(c[i]) : Character.toUpperCase(c[i]);
                backtrack(c, results, i+1);
                c[i] = temp;
            }
        }
    }
}

Last updated