Skip to content

Commit 03adfd0

Browse files
committed
feat: add solutions to lc problem: No.0984
No.0984.String Without AAA or BBB
1 parent 3ca0b66 commit 03adfd0

File tree

6 files changed

+312
-2
lines changed

6 files changed

+312
-2
lines changed

solution/0900-0999/0984.String Without AAA or BBB/README.md

+115-1
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,136 @@
4444

4545
<!-- 这里可写通用的实现逻辑 -->
4646

47+
**方法一:贪心 + 构造**
48+
49+
循环构造字符串,当 $a$ 和 $b$ 都大于 `0` 时:
50+
51+
1. 如果 $a\gt b$,添加字符串 "aab"
52+
1. 如果 $b\gt a$,添加字符串 "bba"
53+
1. 如果 $a=b$,添加字符串 "ab"
54+
55+
循环结束,若 $a$ 有剩余,则添加 $a$ 个字符串 "a";若 $b$ 有剩余,则添加 $b$ 个字符串 "b"。
56+
57+
时间复杂度 $O(a+b)$。
58+
4759
<!-- tabs:start -->
4860

4961
### **Python3**
5062

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

5365
```python
54-
66+
class Solution:
67+
def strWithout3a3b(self, a: int, b: int) -> str:
68+
ans = []
69+
while a and b:
70+
if a > b:
71+
ans.append('aab')
72+
a, b = a - 2, b - 1
73+
elif a < b:
74+
ans.append('bba')
75+
a, b = a - 1, b - 2
76+
else:
77+
ans.append('ab')
78+
a, b = a - 1, b - 1
79+
if a:
80+
ans.append('a' * a)
81+
if b:
82+
ans.append('b' * b)
83+
return ''.join(ans)
5584
```
5685

5786
### **Java**
5887

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

6190
```java
91+
class Solution {
92+
public String strWithout3a3b(int a, int b) {
93+
StringBuilder ans = new StringBuilder();
94+
while (a > 0 && b > 0) {
95+
if (a > b) {
96+
ans.append("aab");
97+
a -= 2;
98+
b -= 1;
99+
} else if (a < b) {
100+
ans.append("bba");
101+
a -= 1;
102+
b -= 2;
103+
} else {
104+
ans.append("ab");
105+
--a;
106+
--b;
107+
}
108+
}
109+
if (a > 0) {
110+
ans.append("a".repeat(a));
111+
}
112+
if (b > 0) {
113+
ans.append("b".repeat(b));
114+
}
115+
return ans.toString();
116+
}
117+
}
118+
```
119+
120+
### **C++**
121+
122+
```cpp
123+
class Solution {
124+
public:
125+
string strWithout3a3b(int a, int b) {
126+
string ans;
127+
while (a && b) {
128+
if (a > b) {
129+
ans += "aab";
130+
a -= 2;
131+
b -= 1;
132+
} else if (a < b) {
133+
ans += "bba";
134+
a -= 1;
135+
b -= 2;
136+
} else {
137+
ans += "ab";
138+
--a;
139+
--b;
140+
}
141+
}
142+
if (a) ans += string(a, 'a');
143+
if (b) ans += string(b, 'b');
144+
return ans;
145+
}
146+
};
147+
```
62148
149+
### **Go**
150+
151+
```go
152+
func strWithout3a3b(a int, b int) string {
153+
var ans strings.Builder
154+
for a > 0 && b > 0 {
155+
if a > b {
156+
ans.WriteString("aab")
157+
a -= 2
158+
b -= 1
159+
} else if a < b {
160+
ans.WriteString("bba")
161+
a -= 1
162+
b -= 2
163+
} else {
164+
ans.WriteString("ab")
165+
a--
166+
b--
167+
}
168+
}
169+
if a > 0 {
170+
ans.WriteString(strings.Repeat("a", a))
171+
}
172+
if b > 0 {
173+
ans.WriteString(strings.Repeat("b", b))
174+
}
175+
return ans.String()
176+
}
63177
```
64178

65179
### **...**

solution/0900-0999/0984.String Without AAA or BBB/README_EN.md

+103-1
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,115 @@
4343
### **Python3**
4444

4545
```python
46-
46+
class Solution:
47+
def strWithout3a3b(self, a: int, b: int) -> str:
48+
ans = []
49+
while a and b:
50+
if a > b:
51+
ans.append('aab')
52+
a, b = a - 2, b - 1
53+
elif a < b:
54+
ans.append('bba')
55+
a, b = a - 1, b - 2
56+
else:
57+
ans.append('ab')
58+
a, b = a - 1, b - 1
59+
if a:
60+
ans.append('a' * a)
61+
if b:
62+
ans.append('b' * b)
63+
return ''.join(ans)
4764
```
4865

4966
### **Java**
5067

5168
```java
69+
class Solution {
70+
public String strWithout3a3b(int a, int b) {
71+
StringBuilder ans = new StringBuilder();
72+
while (a > 0 && b > 0) {
73+
if (a > b) {
74+
ans.append("aab");
75+
a -= 2;
76+
b -= 1;
77+
} else if (a < b) {
78+
ans.append("bba");
79+
a -= 1;
80+
b -= 2;
81+
} else {
82+
ans.append("ab");
83+
--a;
84+
--b;
85+
}
86+
}
87+
if (a > 0) {
88+
ans.append("a".repeat(a));
89+
}
90+
if (b > 0) {
91+
ans.append("b".repeat(b));
92+
}
93+
return ans.toString();
94+
}
95+
}
96+
```
97+
98+
### **C++**
99+
100+
```cpp
101+
class Solution {
102+
public:
103+
string strWithout3a3b(int a, int b) {
104+
string ans;
105+
while (a && b) {
106+
if (a > b) {
107+
ans += "aab";
108+
a -= 2;
109+
b -= 1;
110+
} else if (a < b) {
111+
ans += "bba";
112+
a -= 1;
113+
b -= 2;
114+
} else {
115+
ans += "ab";
116+
--a;
117+
--b;
118+
}
119+
}
120+
if (a) ans += string(a, 'a');
121+
if (b) ans += string(b, 'b');
122+
return ans;
123+
}
124+
};
125+
```
52126
127+
### **Go**
128+
129+
```go
130+
func strWithout3a3b(a int, b int) string {
131+
var ans strings.Builder
132+
for a > 0 && b > 0 {
133+
if a > b {
134+
ans.WriteString("aab")
135+
a -= 2
136+
b -= 1
137+
} else if a < b {
138+
ans.WriteString("bba")
139+
a -= 1
140+
b -= 2
141+
} else {
142+
ans.WriteString("ab")
143+
a--
144+
b--
145+
}
146+
}
147+
if a > 0 {
148+
ans.WriteString(strings.Repeat("a", a))
149+
}
150+
if b > 0 {
151+
ans.WriteString(strings.Repeat("b", b))
152+
}
153+
return ans.String()
154+
}
53155
```
54156

55157
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
public:
3+
string strWithout3a3b(int a, int b) {
4+
string ans;
5+
while (a && b) {
6+
if (a > b) {
7+
ans += "aab";
8+
a -= 2;
9+
b -= 1;
10+
} else if (a < b) {
11+
ans += "bba";
12+
a -= 1;
13+
b -= 2;
14+
} else {
15+
ans += "ab";
16+
--a;
17+
--b;
18+
}
19+
}
20+
if (a) ans += string(a, 'a');
21+
if (b) ans += string(b, 'b');
22+
return ans;
23+
}
24+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
func strWithout3a3b(a int, b int) string {
2+
var ans strings.Builder
3+
for a > 0 && b > 0 {
4+
if a > b {
5+
ans.WriteString("aab")
6+
a -= 2
7+
b -= 1
8+
} else if a < b {
9+
ans.WriteString("bba")
10+
a -= 1
11+
b -= 2
12+
} else {
13+
ans.WriteString("ab")
14+
a--
15+
b--
16+
}
17+
}
18+
if a > 0 {
19+
ans.WriteString(strings.Repeat("a", a))
20+
}
21+
if b > 0 {
22+
ans.WriteString(strings.Repeat("b", b))
23+
}
24+
return ans.String()
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
public String strWithout3a3b(int a, int b) {
3+
StringBuilder ans = new StringBuilder();
4+
while (a > 0 && b > 0) {
5+
if (a > b) {
6+
ans.append("aab");
7+
a -= 2;
8+
b -= 1;
9+
} else if (a < b) {
10+
ans.append("bba");
11+
a -= 1;
12+
b -= 2;
13+
} else {
14+
ans.append("ab");
15+
--a;
16+
--b;
17+
}
18+
}
19+
if (a > 0) {
20+
ans.append("a".repeat(a));
21+
}
22+
if (b > 0) {
23+
ans.append("b".repeat(b));
24+
}
25+
return ans.toString();
26+
}
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution:
2+
def strWithout3a3b(self, a: int, b: int) -> str:
3+
ans = []
4+
while a and b:
5+
if a > b:
6+
ans.append('aab')
7+
a, b = a - 2, b - 1
8+
elif a < b:
9+
ans.append('bba')
10+
a, b = a - 1, b - 2
11+
else:
12+
ans.append('ab')
13+
a, b = a - 1, b - 1
14+
if a:
15+
ans.append('a' * a)
16+
if b:
17+
ans.append('b' * b)
18+
return ''.join(ans)

0 commit comments

Comments
 (0)