Skip to content

784. Letter Case Permutation

Difficulty Topics

Description

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 <= 12
  • s consists of lowercase English letters, uppercase English letters, and digits.

Solution

letter-case-permutation.py
class Solution:
    def letterCasePermutation(self, S: str) -> List[str]:
        res = []
        n = len(S)

        def backtrack(i, s):
            if i == n: 
                res.append("".join(s))
                return

            if s[i].isalpha():
                s[i] = s[i].upper()
                backtrack(i+1, s)

                s[i] = s[i].lower()
                backtrack(i+1, s)

            else:
                backtrack(i+1, s)

        backtrack(0, list(S))

        return res