[leetcode] 784. Letter Case Permutation

题目

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.

思路

递归,遍历字符串,当当前字符为字母时,设大小字符情况分别递归,直至遍历完毕。

代码

python版本:

class Solution:
    def letterCasePermutation(self, s: str) -> List[str]:
        res = []

        def recursion(str, i):
            while i < len(str) and not str[i].isalpha():
                i += 1
            if i == len(str):
                res.append(str)
                return
            recursion(str[:i]+str[i].upper()+str[i+1:], i+1)
            recursion(str[:i]+str[i].lower()+str[i+1:], i+1)
        recursion(s, 0)
        return res

posted @ 2022-03-09 19:26  frankming  阅读(19)  评论(0编辑  收藏  举报