Permutate a String to upper and lower case

Viewed 8944

I have a string, "abc". How would a program look like (if possible, in Java) who permute the String?

For example:

abc
ABC
Abc
aBc
abC
ABc
abC
AbC
6 Answers

You can also use backtracking to solve this problem:

public List<String> letterCasePermutation(String S) {
    List<String> result = new ArrayList<>();
    backtrack(0 , S, "", result);
    return result;
}

private void backtrack(int start, String s, String temp, List<String> result) {
    if(start >= s.length()) {
        result.add(temp);
        return;
    }
   
    
    char c = s.charAt(start);
    if(!Character.isAlphabetic(c)) {
        backtrack(start + 1, s, temp + c, result);
        return;
    }
    if(Character.isUpperCase(c)) {
        backtrack(start + 1, s, temp + c, result);
        c = Character.toLowerCase(c);
        backtrack(start + 1, s, temp + c, result);
    }
    else {
        backtrack(start + 1, s, temp + c, result);
        c = Character.toUpperCase(c);
        backtrack(start + 1, s, temp + c, result);
    }
}
Related