File tree 6 files changed +312
-2
lines changed
solution/0900-0999/0984.String Without AAA or BBB
6 files changed +312
-2
lines changed Original file line number Diff line number Diff line change 44
44
45
45
<!-- 这里可写通用的实现逻辑 -->
46
46
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
+
47
59
<!-- tabs:start -->
48
60
49
61
### ** Python3**
50
62
51
63
<!-- 这里可写当前语言的特殊实现逻辑 -->
52
64
53
65
``` 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)
55
84
```
56
85
57
86
### ** Java**
58
87
59
88
<!-- 这里可写当前语言的特殊实现逻辑 -->
60
89
61
90
``` 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
+ ```
62
148
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
+ }
63
177
```
64
178
65
179
### ** ...**
Original file line number Diff line number Diff line change 43
43
### ** Python3**
44
44
45
45
``` 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)
47
64
```
48
65
49
66
### ** Java**
50
67
51
68
``` 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
+ ```
52
126
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
+ }
53
155
```
54
156
55
157
### ** ...**
Original file line number Diff line number Diff line change
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 number Diff line number Diff line change
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 number Diff line number Diff line change
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 number Diff line number Diff line change
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 )
You can’t perform that action at this time.
0 commit comments