[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

+ Recent posts