Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 778311f

Browse files
committed
feat: add solutions to lc problem: No.0784
No.0784.Letter Case Permutation
1 parent bcaf0c5 commit 778311f

File tree

4 files changed

+224
-2
lines changed

4 files changed

+224
-2
lines changed

‎solution/0700-0799/0784.Letter Case Permutation/README.md‎

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,27 +30,115 @@
3030
<li><code>S</code>&nbsp;仅由数字和字母组成。</li>
3131
</ul>
3232

33-
3433
## 解法
3534

3635
<!-- 这里可写通用的实现逻辑 -->
3736

37+
DFS 回溯法。
38+
3839
<!-- tabs:start -->
3940

4041
### **Python3**
4142

4243
<!-- 这里可写当前语言的特殊实现逻辑 -->
4344

4445
```python
46+
class Solution:
47+
def letterCasePermutation(self, s: str) -> List[str]:
48+
def dfs(i, t):
49+
if i == len(t):
50+
ans.append(''.join(t))
51+
return
52+
dfs(i + 1, t)
53+
if t[i].isalpha():
54+
t[i] = t[i].upper() if t[i].islower() else t[i].lower()
55+
dfs(i + 1, t)
56+
57+
ans = []
58+
t = list(s)
59+
dfs(0, t)
60+
return ans
61+
```
4562

63+
```python
64+
class Solution:
65+
def letterCasePermutation(self, s: str) -> List[str]:
66+
def dfs(i, t):
67+
if i == len(s):
68+
ans.append(t)
69+
return
70+
if s[i].isalpha():
71+
dfs(i + 1, t + s[i].upper())
72+
dfs(i + 1, t + s[i].lower())
73+
else:
74+
dfs(i + 1, t + s[i])
75+
76+
ans = []
77+
dfs(0, '')
78+
return ans
4679
```
4780

4881
### **Java**
4982

5083
<!-- 这里可写当前语言的特殊实现逻辑 -->
5184

5285
```java
86+
class Solution {
87+
public List<String> letterCasePermutation(String S) {
88+
char[] cs = S.toCharArray();
89+
List<String> res = new ArrayList<>();
90+
dfs(cs, 0, res);
91+
return res;
92+
}
93+
94+
private void dfs(char[] cs, int i, List<String> res) {
95+
if (i == cs.length) {
96+
res.add(String.valueOf(cs));
97+
return;
98+
}
99+
dfs(cs, i + 1, res);
100+
if (cs[i] >= 'A') {
101+
cs[i] ^= 32;
102+
dfs(cs, i + 1, res);
103+
}
104+
}
105+
}
106+
```
53107

108+
### **C++**
109+
110+
```cpp
111+
class Solution {
112+
public:
113+
vector<string> ans;
114+
string s;
115+
116+
vector<string> letterCasePermutation(string s) {
117+
this->s = s;
118+
string t = "";
119+
dfs(0, t);
120+
return ans;
121+
}
122+
123+
void dfs(int i, string t) {
124+
if (i == s.size())
125+
{
126+
ans.push_back(t);
127+
return;
128+
}
129+
if (isalpha(s[i]))
130+
{
131+
char c1 = toupper(s[i]);
132+
char c2 = tolower(s[i]);
133+
dfs(i + 1, t + c1);
134+
dfs(i + 1, t + c2);
135+
}
136+
else
137+
{
138+
dfs(i + 1, t + s[i]);
139+
}
140+
}
141+
};
54142
```
55143
56144
### **...**

‎solution/0700-0799/0784.Letter Case Permutation/README_EN.md‎

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,21 +45,109 @@
4545
<li><code>S</code> will consist only of letters or digits.</li>
4646
</ul>
4747

48-
4948
## Solutions
5049

50+
DFS.
51+
5152
<!-- tabs:start -->
5253

5354
### **Python3**
5455

5556
```python
57+
class Solution:
58+
def letterCasePermutation(self, s: str) -> List[str]:
59+
def dfs(i, t):
60+
if i == len(t):
61+
ans.append(''.join(t))
62+
return
63+
dfs(i + 1, t)
64+
if t[i].isalpha():
65+
t[i] = t[i].upper() if t[i].islower() else t[i].lower()
66+
dfs(i + 1, t)
67+
68+
ans = []
69+
t = list(s)
70+
dfs(0, t)
71+
return ans
72+
```
5673

74+
```python
75+
class Solution:
76+
def letterCasePermutation(self, s: str) -> List[str]:
77+
def dfs(i, t):
78+
if i == len(s):
79+
ans.append(t)
80+
return
81+
if s[i].isalpha():
82+
dfs(i + 1, t + s[i].upper())
83+
dfs(i + 1, t + s[i].lower())
84+
else:
85+
dfs(i + 1, t + s[i])
86+
87+
ans = []
88+
dfs(0, '')
89+
return ans
5790
```
5891

5992
### **Java**
6093

6194
```java
95+
class Solution {
96+
public List<String> letterCasePermutation(String S) {
97+
char[] cs = S.toCharArray();
98+
List<String> res = new ArrayList<>();
99+
dfs(cs, 0, res);
100+
return res;
101+
}
102+
103+
private void dfs(char[] cs, int i, List<String> res) {
104+
if (i == cs.length) {
105+
res.add(String.valueOf(cs));
106+
return;
107+
}
108+
dfs(cs, i + 1, res);
109+
if (cs[i] >= 'A') {
110+
cs[i] ^= 32;
111+
dfs(cs, i + 1, res);
112+
}
113+
}
114+
}
115+
```
62116

117+
### **C++**
118+
119+
```cpp
120+
class Solution {
121+
public:
122+
vector<string> ans;
123+
string s;
124+
125+
vector<string> letterCasePermutation(string s) {
126+
this->s = s;
127+
string t = "";
128+
dfs(0, t);
129+
return ans;
130+
}
131+
132+
void dfs(int i, string t) {
133+
if (i == s.size())
134+
{
135+
ans.push_back(t);
136+
return;
137+
}
138+
if (isalpha(s[i]))
139+
{
140+
char c1 = toupper(s[i]);
141+
char c2 = tolower(s[i]);
142+
dfs(i + 1, t + c1);
143+
dfs(i + 1, t + c2);
144+
}
145+
else
146+
{
147+
dfs(i + 1, t + s[i]);
148+
}
149+
}
150+
};
63151
```
64152
65153
### **...**
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Solution {
2+
public:
3+
vector<string> ans;
4+
string s;
5+
6+
vector<string> letterCasePermutation(string s) {
7+
this->s = s;
8+
string t = "";
9+
dfs(0, t);
10+
return ans;
11+
}
12+
13+
void dfs(int i, string t) {
14+
if (i == s.size())
15+
{
16+
ans.push_back(t);
17+
return;
18+
}
19+
if (isalpha(s[i]))
20+
{
21+
char c1 = toupper(s[i]);
22+
char c2 = tolower(s[i]);
23+
dfs(i + 1, t + c1);
24+
dfs(i + 1, t + c2);
25+
}
26+
else
27+
{
28+
dfs(i + 1, t + s[i]);
29+
}
30+
}
31+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def letterCasePermutation(self, s: str) -> List[str]:
3+
def dfs(i, t):
4+
if i == len(t):
5+
ans.append(''.join(t))
6+
return
7+
dfs(i + 1, t)
8+
if t[i].isalpha():
9+
t[i] = t[i].upper() if t[i].islower() else t[i].lower()
10+
dfs(i + 1, t)
11+
12+
ans = []
13+
t = list(s)
14+
dfs(0, t)
15+
return ans

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /