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
Was this helpful?