[LeetCode] 784. Letter Case Permutation_Medium tag: backtracking
2021-06-06 09:36 Johnson_强生仔仔 阅读(32) 评论(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 between1
and12
.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