首页 > 其他 > 详细

[LeetCode] 784. Letter Case Permutation_Medium tag: backtracking

时间:2021-06-06 13:31:39      阅读:15      评论:0      收藏:0      [点我收藏+]

Given a string s, we can transform every letter individually to be lowercase or uppercase to create another string.

Return a list of all possible strings we could create. You can return the output in any order.

 

Example 1:

Input: s = "a1b2"
Output: ["a1b2","a1B2","A1b2","A1B2"]

Example 2:

Input: s = "3z4"
Output: ["3z4","3Z4"]

Example 3:

Input: s = "12345"
Output: ["12345"]

Example 4:

Input: s = "0"
Output: ["0"]

 

Constraints:

  • s will be a string with length between 1 and 12.
  • s will consist only of letters or digits.

 

Ideas:

DFS 的backtracking    T: O(2^n) worst      S: O(n)

 

Code

class Solution:
    def letterCasePermutation(self, s):
        ans = []
        def helper(ans, temp, s, pos):
            if len(temp) == len(s):
                ans.append(temp)
            else:
                if s[pos].isdigit():
                    helper(ans, temp + s[pos], s, pos + 1)
                else:
                    helper(ans, temp + s[pos].lower(), s, pos + 1)
                    helper(ans, temp + s[pos].upper(), s, pos + 1)
        helper(ans, "", s, 0)
        return ans

 

[LeetCode] 784. Letter Case Permutation_Medium tag: backtracking

原文:https://www.cnblogs.com/Johnsonxiong/p/14854582.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!