LeetCodeDiary

A Diary for solving LeetCode problems

View on GitHub

541. 反转字符串 II

难度简单184收藏分享切换为英文接收动态反馈

给定一个字符串 s 和一个整数 k,从字符串开头算起,每 2k 个字符反转前 k 个字符。

示例 1:

输入:s = "abcdefg", k = 2
输出:"bacdfeg"

示例 2:

输入:s = "abcd", k = 2
输出:"bacd"

提示:

字符串 简单

代码

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)