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 5932d02

Browse files
committed
feat: add solutions to lc problem: No.0541.Reverse String II
1 parent 6ae1eb2 commit 5932d02

File tree

6 files changed

+147
-22
lines changed

6 files changed

+147
-22
lines changed

‎solution/0500-0599/0541.Reverse String II/README.md‎

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,68 @@
4242
<!-- 这里可写当前语言的特殊实现逻辑 -->
4343

4444
```python
45-
45+
class Solution:
46+
def reverseStr(self, s: str, k: int) -> str:
47+
t = list(s)
48+
for i in range(0, len(t), k << 1):
49+
t[i: i + k] = reversed(t[i: i + k])
50+
return ''.join(t)
4651
```
4752

4853
### **Java**
4954

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

5257
```java
58+
class Solution {
59+
public String reverseStr(String s, int k) {
60+
char[] chars = s.toCharArray();
61+
for (int i = 0; i < chars.length; i += (k << 1)) {
62+
for (int st = i, ed = Math.min(chars.length - 1, i + k - 1); st < ed; ++st, --ed) {
63+
char t = chars[st];
64+
chars[st] = chars[ed];
65+
chars[ed] = t;
66+
}
67+
}
68+
return new String(chars);
69+
}
70+
}
71+
```
72+
73+
### **C++**
74+
75+
```cpp
76+
class Solution {
77+
public:
78+
string reverseStr(string s, int k) {
79+
for (int i = 0, n = s.size(); i < n; i += (k << 1))
80+
{
81+
reverse(s.begin() + i, s.begin() + min(i + k, n));
82+
}
83+
return s;
84+
}
85+
};
86+
```
5387
88+
### **Go**
89+
90+
```go
91+
func reverseStr(s string, k int) string {
92+
t := []byte(s)
93+
for i := 0; i < len(t); i += (k << 1) {
94+
for st, ed := i, min(i+k-1, len(t)-1); st < ed; st, ed = st+1, ed-1 {
95+
t[st], t[ed] = t[ed], t[st]
96+
}
97+
}
98+
return string(t)
99+
}
100+
101+
func min(a, b int) int {
102+
if a < b {
103+
return a
104+
}
105+
return b
106+
}
54107
```
55108

56109
### **...**

‎solution/0500-0599/0541.Reverse String II/README_EN.md‎

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,66 @@
3333
### **Python3**
3434

3535
```python
36-
36+
class Solution:
37+
def reverseStr(self, s: str, k: int) -> str:
38+
t = list(s)
39+
for i in range(0, len(t), k << 1):
40+
t[i: i + k] = reversed(t[i: i + k])
41+
return ''.join(t)
3742
```
3843

3944
### **Java**
4045

4146
```java
47+
class Solution {
48+
public String reverseStr(String s, int k) {
49+
char[] chars = s.toCharArray();
50+
for (int i = 0; i < chars.length; i += (k << 1)) {
51+
for (int st = i, ed = Math.min(chars.length - 1, i + k - 1); st < ed; ++st, --ed) {
52+
char t = chars[st];
53+
chars[st] = chars[ed];
54+
chars[ed] = t;
55+
}
56+
}
57+
return new String(chars);
58+
}
59+
}
60+
```
61+
62+
### **C++**
63+
64+
```cpp
65+
class Solution {
66+
public:
67+
string reverseStr(string s, int k) {
68+
for (int i = 0, n = s.size(); i < n; i += (k << 1))
69+
{
70+
reverse(s.begin() + i, s.begin() + min(i + k, n));
71+
}
72+
return s;
73+
}
74+
};
75+
```
4276
77+
### **Go**
78+
79+
```go
80+
func reverseStr(s string, k int) string {
81+
t := []byte(s)
82+
for i := 0; i < len(t); i += (k << 1) {
83+
for st, ed := i, min(i+k-1, len(t)-1); st < ed; st, ed = st+1, ed-1 {
84+
t[st], t[ed] = t[ed], t[st]
85+
}
86+
}
87+
return string(t)
88+
}
89+
90+
func min(a, b int) int {
91+
if a < b {
92+
return a
93+
}
94+
return b
95+
}
4396
```
4497

4598
### **...**
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution {
2+
public:
3+
string reverseStr(string s, int k) {
4+
for (int i = 0, n = s.size(); i < n; i += (k << 1))
5+
{
6+
reverse(s.begin() + i, s.begin() + min(i + k, n));
7+
}
8+
return s;
9+
}
10+
};
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
func reverseStr(s string, k int) string {
2+
t := []byte(s)
3+
for i := 0; i < len(t); i += (k << 1) {
4+
for st, ed := i, min(i+k-1, len(t)-1); st < ed; st, ed = st+1, ed-1 {
5+
t[st], t[ed] = t[ed], t[st]
6+
}
7+
}
8+
return string(t)
9+
}
10+
11+
func min(a, b int) int {
12+
if a < b {
13+
return a
14+
}
15+
return b
16+
}
Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,13 @@
11
class Solution {
22
public String reverseStr(String s, int k) {
3-
if (k < 2) return s;
4-
StringBuilder sb = new StringBuilder();
5-
int length = s.length(), index = 0;
6-
while (index < length) {
7-
if (index + 2 * k <= length) {
8-
sb.append(reverse(s, index, index + k));
9-
sb.append(s.substring(index + k, index + 2 * k));
10-
index += 2 * k;
11-
} else if (index + k <= length){
12-
sb.append(reverse(s, index, index + k));
13-
sb.append(s.substring(index + k));
14-
break;
15-
} else {
16-
sb.append(reverse(s, index, length));
17-
break;
3+
char[] chars = s.toCharArray();
4+
for (int i = 0; i < chars.length; i += (k << 1)) {
5+
for (int st = i, ed = Math.min(chars.length - 1, i + k - 1); st < ed; ++st, --ed) {
6+
char t = chars[st];
7+
chars[st] = chars[ed];
8+
chars[ed] = t;
189
}
1910
}
20-
return sb.toString();
21-
}
22-
23-
private StringBuffer reverse(String s, int index, int end) {
24-
return new StringBuffer(s.substring(index, end)).reverse();
11+
return new String(chars);
2512
}
2613
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class Solution:
2+
def reverseStr(self, s: str, k: int) -> str:
3+
t = list(s)
4+
for i in range(0, len(t), k << 1):
5+
t[i: i + k] = reversed(t[i: i + k])
6+
return ''.join(t)

0 commit comments

Comments
(0)

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