541. 反转字符串 II

Problem: 541. 反转字符串 II

思路

每隔2k个判断i之后是否还有k个字符串,有就翻转k个,没有就全部翻转

复杂度

  • 时间复杂度:

$O(n)$

  • 空间复杂度:

$O(1)$

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31



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 );//剩余字符大于k

            else

                reverse(s.begin() + i, s.end());//剩余字符小于k

        }

        return s;

    }

};