-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path541. Reverse String II.py
38 lines (28 loc) · 1.01 KB
/
541. Reverse String II.py
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
32
33
34
35
36
37
38
"""
https://leetcode.com/problems/reverse-string-ii/
Given a string s and an integer k, reverse the first k characters for every 2k characters counting
from the start of the string.
If there are fewer than k characters left, reverse all of them. If there are less than 2k but
greater than or equal to k characters, then reverse the first k 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"
"""
class Solution:
def reverseStr(self, s: str, k: int) -> str:
i = 0
chars = []
while i < len(s):
for j in range(min(i + k, len(s)) - 1, i - 1, -1):
chars.append(s[j])
i += 1
for i in range(i, min(i + k, len(s))):
chars.append(s[i])
i += 1
return "".join(chars)
solution = Solution()
assert solution.reverseStr("abcdefg", 2) == "bacdfeg"
assert solution.reverseStr("abcdefg", 3) == "cbadefg"