541. 反转字符串 II
难度简单184收藏分享切换为英文接收动态反馈
给定一个字符串 s 和一个整数 k,从字符串开头算起,每 2k 个字符反转前 k 个字符。
- 如果剩余字符少于
k个,则将剩余字符全部反转。 - 如果剩余字符小于
2k但大于或等于k个,则反转前k个字符,其余字符保持原样。
示例 1:
输入:s = "abcdefg", k = 2
输出:"bacdfeg"
示例 2:
输入:s = "abcd", k = 2
输出:"bacd"
提示:
1 <= s.length <= 104s仅由小写英文组成1 <= k <= 104
字符串 简单
代码
class Solution:
def reverseStr(self, s: str, k: int) -> str:
s = list(s)
n = len(s)
i = -1
for i in range(n//(2*k)):
t = s[i*2*k:i*2*k+k]
s[i*2*k:i*2*k+k] = t[::-1]
i += 1
if n % (2*k) >= k:
t = s[i*2*k:i*2*k+k]
s[i*2*k:i*2*k+k] = t[::-1]
else:
t = s[i*2*k:]
s[i*2*k:] = t[::-1]
return ''.join(s)