转为列表,使用双指针法

class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        s = list(s)
        for i in range(0,len(s),2*k):
            j = min(len(s)-1,i+k-1)
            while i<j :
                s[i],s[j] = s[j],s[i]
                i += 1
                j -= 1
        return ''.join(s)

541. Reverse String II刷题笔记_双指针


二刷用了str的索引法,速度会快一些

class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        p = 0
        while p<len(s):
            p2 = p+k
            s = s[:p]+s[p:p2][::-1]+s[p2:]
            p = p+2*k
        return s

541. Reverse String II刷题笔记_python_02