Letter Case Permutation
Problem statement
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"]
Constraints:
1 <= s.length <= 12sconsists of lowercase English letters, uppercase English letters, and digits.
My solution
/**
* @param {string} s
* @return {string[]}
*/
var letterCasePermutation = function(s) {
const strs = new Set();
function traverse(currentIndex, str) {
if (currentIndex === s.length) {
!strs.has(str) && strs.add(str);
return;
}
const char = s.charAt(currentIndex);
if (typeof char === "number") {
traverse(currentIndex + 1, `${str}${char}`)
} else {
traverse(currentIndex + 1, `${str}${char.toUpperCase()}`)
traverse(currentIndex + 1, `${str}${char.toLowerCase()}`)
}
}
traverse(0, "")
return [...strs]
};