-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathletter_case_permutation.py
48 lines (36 loc) · 1.15 KB
/
letter_case_permutation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
"""
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.
"""
class Solution:
def letterCasePermutation(self, s: str) -> List[str]:
def dfs(s,index, sol):
if index == len(s):
res.append("".join(sol.copy()))
return
if s[index].isdigit():
sol.append(s[index])
dfs(s, index + 1, sol)
sol.pop()
else:
c = s[index].upper()
sol.append(c)
dfs(s, index + 1, sol)
sol.pop()
c = s[index].lower()
sol.append(c)
dfs(s, index + 1, sol)
sol.pop()
res = []
sol = []
dfs(s, 0, [])
return res