Skip to content

Commit 68cccfe

Browse files
authored
feat: add solutions to lc problem: No.2745 (#1071)
No.2745.Construct the Longest New String
1 parent 53dd799 commit 68cccfe

File tree

7 files changed

+162
-6
lines changed

7 files changed

+162
-6
lines changed

solution/2700-2799/2745.Construct the Longest New String/README.md

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,34 +46,93 @@
4646

4747
<!-- 这里可写通用的实现逻辑 -->
4848

49+
**方法一:分类讨论**
50+
51+
我们观察发现,字符串 `'AA'` 之后只能跟 `'BB'`,而字符串 `'AB'` 可以放在字符串开头或结尾。因此:
52+
53+
- 如果 $x \lt y$,那么我们可以先交替放置 `'BBAABBAA..BB'`,一共放置 $x$ 个 `'AA'` 和 $x+1$ 个 `'BB'`,然后放置剩余的 $z$ 个 `'AB'`,总长度为 $(x \times 2 + z + 1) \times 2$;
54+
- 如果 $x \gt y$,那么我们可以先交替放置 `'AABBAABB..AA'`,一共放置 $y$ 个 `'BB'` 和 $y+1$ 个 `'AA'`,然后放置剩余的 $z$ 个 `'AB'`,总长度为 $(y \times 2 + z + 1) \times 2$;
55+
- 如果 $x = y$,我们只需要交替放置 `'AABB'`,一共放置 $x$ 个 `'AA'` 和 $y$ 个 `'BB'`,然后放置剩余的 $z$ 个 `'AB'`,总长度为 $(x + y + z) \times 2$。
56+
57+
时间复杂度 $O(1)$,空间复杂度 $O(1)$。
58+
4959
<!-- tabs:start -->
5060

5161
### **Python3**
5262

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

5565
```python
56-
66+
class Solution:
67+
def longestString(self, x: int, y: int, z: int) -> int:
68+
if x < y:
69+
return (x * 2 + z + 1) * 2
70+
if x > y:
71+
return (y * 2 + z + 1) * 2
72+
return (x + y + z) * 2
5773
```
5874

5975
### **Java**
6076

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

6379
```java
64-
80+
class Solution {
81+
public int longestString(int x, int y, int z) {
82+
if (x < y) {
83+
return (x * 2 + z + 1) * 2;
84+
}
85+
if (x > y) {
86+
return (y * 2 + z + 1) * 2;
87+
}
88+
return (x + y + z) * 2;
89+
}
90+
}
6591
```
6692

6793
### **C++**
6894

6995
```cpp
70-
96+
class Solution {
97+
public:
98+
int longestString(int x, int y, int z) {
99+
if (x < y) {
100+
return (x * 2 + z + 1) * 2;
101+
}
102+
if (x > y) {
103+
return (y * 2 + z + 1) * 2;
104+
}
105+
return (x + y + z) * 2;
106+
}
107+
};
71108
```
72109
73110
### **Go**
74111
75112
```go
113+
func longestString(x int, y int, z int) int {
114+
if x < y {
115+
return (x*2 + z + 1) * 2
116+
}
117+
if x > y {
118+
return (y*2 + z + 1) * 2
119+
}
120+
return (x + y + z) * 2
121+
}
122+
```
76123

124+
### **TypeScript**
125+
126+
```ts
127+
function longestString(x: number, y: number, z: number): number {
128+
if (x < y) {
129+
return (x * 2 + z + 1) * 2;
130+
}
131+
if (x > y) {
132+
return (y * 2 + z + 1) * 2;
133+
}
134+
return (x + y + z) * 2;
135+
}
77136
```
78137

79138
### **...**

solution/2700-2799/2745.Construct the Longest New String/README_EN.md

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,25 +45,74 @@ That string has length 14, and we can show that it is impossible to construct a
4545
### **Python3**
4646

4747
```python
48-
48+
class Solution:
49+
def longestString(self, x: int, y: int, z: int) -> int:
50+
if x < y:
51+
return (x * 2 + z + 1) * 2
52+
if x > y:
53+
return (y * 2 + z + 1) * 2
54+
return (x + y + z) * 2
4955
```
5056

5157
### **Java**
5258

5359
```java
54-
60+
class Solution {
61+
public int longestString(int x, int y, int z) {
62+
if (x < y) {
63+
return (x * 2 + z + 1) * 2;
64+
}
65+
if (x > y) {
66+
return (y * 2 + z + 1) * 2;
67+
}
68+
return (x + y + z) * 2;
69+
}
70+
}
5571
```
5672

5773
### **C++**
5874

5975
```cpp
60-
76+
class Solution {
77+
public:
78+
int longestString(int x, int y, int z) {
79+
if (x < y) {
80+
return (x * 2 + z + 1) * 2;
81+
}
82+
if (x > y) {
83+
return (y * 2 + z + 1) * 2;
84+
}
85+
return (x + y + z) * 2;
86+
}
87+
};
6188
```
6289
6390
### **Go**
6491
6592
```go
93+
func longestString(x int, y int, z int) int {
94+
if x < y {
95+
return (x*2 + z + 1) * 2
96+
}
97+
if x > y {
98+
return (y*2 + z + 1) * 2
99+
}
100+
return (x + y + z) * 2
101+
}
102+
```
66103

104+
### **TypeScript**
105+
106+
```ts
107+
function longestString(x: number, y: number, z: number): number {
108+
if (x < y) {
109+
return (x * 2 + z + 1) * 2;
110+
}
111+
if (x > y) {
112+
return (y * 2 + z + 1) * 2;
113+
}
114+
return (x + y + z) * 2;
115+
}
67116
```
68117

69118
### **...**
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution {
2+
public:
3+
int longestString(int x, int y, int z) {
4+
if (x < y) {
5+
return (x * 2 + z + 1) * 2;
6+
}
7+
if (x > y) {
8+
return (y * 2 + z + 1) * 2;
9+
}
10+
return (x + y + z) * 2;
11+
}
12+
};
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
func longestString(x int, y int, z int) int {
2+
if x < y {
3+
return (x*2 + z + 1) * 2
4+
}
5+
if x > y {
6+
return (y*2 + z + 1) * 2
7+
}
8+
return (x + y + z) * 2
9+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution {
2+
public int longestString(int x, int y, int z) {
3+
if (x < y) {
4+
return (x * 2 + z + 1) * 2;
5+
}
6+
if (x > y) {
7+
return (y * 2 + z + 1) * 2;
8+
}
9+
return (x + y + z) * 2;
10+
}
11+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class Solution:
2+
def longestString(self, x: int, y: int, z: int) -> int:
3+
if x < y:
4+
return (x * 2 + z + 1) * 2
5+
if x > y:
6+
return (y * 2 + z + 1) * 2
7+
return (x + y + z) * 2
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function longestString(x: number, y: number, z: number): number {
2+
if (x < y) {
3+
return (x * 2 + z + 1) * 2;
4+
}
5+
if (x > y) {
6+
return (y * 2 + z + 1) * 2;
7+
}
8+
return (x + y + z) * 2;
9+
}

0 commit comments

Comments
 (0)