[JS] Letter Case Permutation
2022. 7. 31. 12:39
🔒 문제 (LeetCode 784)
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.
Constraints:
- 1 <= s.length <= 12
- s consists of lowercase English letters, uppercase English letters, and digits.
🌊 입출력
Example 1:
Input: s = "a1b2"
Output: ["a1b2","a1B2","A1b2","A1B2"]
Example 2:
Input: s = "3z4"
Output: ["3z4","3Z4"]
🔑 해결
🌌 알고리즘 - DFS
모든 문자를 조회하며 각 문자가 대문자 또는 소문자로 변환하여 얻는 문자열을 재귀적으로 구하고, 모든 문자에 대한 탐색을 마쳤을 때 현재 문자열을 답에 추가한다.
/**
* @param {string} s
* @return {string[]}
*/
var letterCasePermutation = function(s) {
const len = s.length;
const result = [];
function dfs(letters, index) {
if(index === len) {
result.push(letters.join(''));
return;
}
if(letters[index] >= 0 && letters[index] <= 9) {
dfs(letters, index + 1);
return;
}
letters[index] = letters[index].toUpperCase();
dfs(letters, index + 1);
letters[index] = letters[index].toLowerCase();
dfs(letters, index + 1);
}
dfs(s.split(''), 0);
return result;
};
'코딩테스트 (JS) > DFS | BFS' 카테고리의 다른 글
[JS] Number of Provinces (0) | 2022.08.12 |
---|---|
[JS] Number of Islands (0) | 2022.08.12 |
[JS] Permutations (0) | 2022.07.31 |
[JS] Combinations (0) | 2022.07.31 |
[JS] Rotting Oranges (0) | 2022.07.30 |