9. 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.

Example 1:
Input: S = "a1b2"
Output: ["a1b2","a1B2","A1b2","A1B2"]

Example 2:
Input: S = "3z4"
Output: ["3z4","3Z4"]


Example 3:
Input: S = "12345"
Output: ["12345"]


Example 4:
Input: S = "0"
Output: ["0"]

Solution: (Recursion)

class Solution
{
public:
    void changeCase(string inp, string out, vector<string> &s)
    {

        if (inp == "")
        {
            s.push_back(out);
            return;
        }

        string a1 = inp.substr(0, 1);
        string a2 = inp.substr(1, inp.length() - 1);

        if (a1[0] >= 48 && a1[0] <= 57)
        {
            changeCase(a2, out + a1, s);
        }
        else
        {
            changeCase(a2, out + a1, s);

            if (a1[0] >= 97 && a1[0] <= 122)
            {
                a1[0] = toupper(a1[0]);
                changeCase(a2, out + a1, s);
            }
            else
            {
                a1[0] = tolower(a1[0]);
                changeCase(a2, out + a1, s);
            }
        }
        return;
    }

    vector<string> letterCasePermutation(string S)
    {

        vector<string> s;
        string k = "";
        changeCase(S, k, s);

        return s;
    }
};

Last updated