mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
Update
This commit is contained in:
BIN
pics/541_反转字符串II.png
Normal file
BIN
pics/541_反转字符串II.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
@ -4,9 +4,37 @@
|
||||
https://leetcode-cn.com/problems/reverse-string-ii/
|
||||
|
||||
## 思路
|
||||
先做0344.反转字符串,在做这道题目更好一些
|
||||
|
||||
for循环中i 每次移动 2 * k,然后判断是否需要有反转的区间
|
||||
|
||||
性能如下:
|
||||
<img src='../pics/541_反转字符串II.png' width=600> </img></div>
|
||||
|
||||
## C++代码
|
||||
|
||||
使用C++库里的反转函数reverse
|
||||
|
||||
```
|
||||
class Solution {
|
||||
public:
|
||||
string reverseStr(string s, int k) {
|
||||
for (int i = 0; i < s.size(); i += (2 * k)) {
|
||||
// 1. 每隔 2k 个字符的前 k 个字符进行反转
|
||||
// 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符
|
||||
if (i + k <= s.size()) {
|
||||
reverse(s.begin() + i, s.begin() + i + k );
|
||||
continue;
|
||||
}
|
||||
// 3. 剩余字符少于 k 个,则将剩余字符全部反转。
|
||||
reverse(s.begin() + i, s.begin() + s.size());
|
||||
}
|
||||
return s;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
自己实现反转函数
|
||||
```
|
||||
class Solution {
|
||||
public:
|
||||
@ -16,22 +44,20 @@ public:
|
||||
swap(s[i], s[j]);
|
||||
}
|
||||
}
|
||||
|
||||
// C++ 自带了reverse 方法,但是我依然建议自己实现
|
||||
string reverseStr(string s, int k) {
|
||||
bool entry = false;
|
||||
int i;
|
||||
for (i = 0; i < s.size(); i += (2 * k)) {
|
||||
for (int i = 0; i < s.size(); i += (2 * k)) {
|
||||
// 1. 每隔 2k 个字符的前 k 个字符进行反转
|
||||
// 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符
|
||||
if (i + k <= s.size()) {
|
||||
// std::reverse(s.begin() + i, s.begin() + i + k );
|
||||
reverse(s, i, i + k - 1);
|
||||
continue;
|
||||
}
|
||||
// std::reverse(s.begin() + i, s.begin() + s.size());
|
||||
// 3. 剩余字符少于 k 个,则将剩余字符全部反转。
|
||||
reverse(s, i, s.size() - 1);
|
||||
}
|
||||
return s;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
> 笔者在先后在腾讯和百度从事技术研发多年,利用工作之余重刷leetcode,本文 [GitHub](https://github.com/youngyangyang04/leetcode-master ):https://github.com/youngyangyang04/leetcode-master 已经收录,欢迎star,fork,共同学习,一起进步。
|
||||
|
Reference in New Issue
Block a user