# LC 541. Reverse String II ### [Problem link](https://leetcode.com/problems/reverse-string-ii/) ###### tags: `leedcode` `easy` `python` `c++` Given a string <code>s</code> and an integer <code>k</code>, reverse the first <code>k</code> characters for every <code>2k</code> characters counting from the start of the string. If there are fewer than <code>k</code> characters left, reverse all of them. If there are less than <code>2k</code> but greater than or equal to <code>k</code> characters, then reverse the first <code>k</code> characters and leave the other as original. **Example 1:** ```Input: s = "abcdefg", k = 2 Output: "bacdfeg" ```**Example 2:** ```Input: s = "abcd", k = 2 Output: "bacd" ``` **Constraints:** - <code>1 <= s.length <= 10<sup>4</sup></code> - <code>s</code> consists of only lowercase English letters. - <code>1 <= k <= 10<sup>4</sup></code> ## Solution 1 #### Python ```python= class Solution: def reverseStr(self, s: str, k: int) -> str: a = list(s) for i in range(0, len(s), 2 * k): a[i : i + k] = reversed(a[i : i + k]) return ''.join(a) ``` #### C++ ```cpp= class Solution { public: string reverseStr(string s, int k) { for (int i = 0; i < s.size(); i += 2 * k) { if (i + k <= s.size()) { reverse(s.begin() + i, s.begin() + i + k); } else { reverse(s.begin() + i, s.end()); } } return s; } }; ``` >### Complexity >| | Time Complexity | Space Complexity | >| ------------------- | --------------- | ---------------- | >| Solution 1(c++) | O(n) | O(1) | >| Solution 1(python) | O(n) | O(n) | ## Note 因為python在string沒有像c++這樣方便的reverse function, 所以需要先轉成list, 再用list slice處理, 所以Space Complexity為O(n)