Letter Case Permutation LeetCode

 Given a string s, you can transform every letter individually to be lowercase or uppercase to create another string.


Return a list of all possible strings we could create. Return the output in any order.


 


Example 1:


Input: s = "a1b2"

Output: ["a1b2","a1B2","A1b2","A1B2"]

Example 2:


Input: s = "3z4"

Output: ["3z4","3Z4"]



class Solution {
    public List<String> letterCasePermutation(String s) {
       
        List<String> result= new ArrayList<>();
        StringBuilder builder= new StringBuilder();
        int start=0;
        backtrack(s,start,builder,result);
        return result;
    }

    public static void backtrack(String s,int start, StringBuilder builder, List<String> result)
    {
        //base case
        if (start == s.length()) {
    result.add(builder.toString());
    return;
}

    char ch=s.charAt(start);

// digit
    if(Character.isDigit(ch))
    {
builder.append(ch);
 backtrack(s,start+1,builder,result);
 builder.deleteCharAt(builder.length()-1);

    }
    else
    {
        //lowe case
builder.append(Character.toLowerCase(ch));
 backtrack(s,start+1,builder,result);
 builder.deleteCharAt(builder.length()-1);

        //uppercase
builder.append(Character.toUpperCase(ch));
 backtrack(s,start+1,builder,result);
 builder.deleteCharAt(builder.length()-1);
    }

    }


}

Comments

Popular posts from this blog

Two Sum II - Input Array Is Sorted

Comparable Vs. Comparator in Java

Increasing Triplet Subsequence