給定一個字符串 s 和一個整數 k,你需要對從字符串開頭算起的每隔?2k 個字符的前 k 個字符進行反轉。
如果剩余字符少于 k 個,則將剩余字符全部反轉。
如果剩余字符小于 2k 但大于或等于 k 個,則反轉前 k 個字符,其余字符保持原樣。
?
示例:
輸入: s = "abcdefg", k = 2
輸出: "bacdfeg"
?
提示:
該字符串只包含小寫英文字母。
給定字符串的長度和 k 在 [1, 10000] 范圍內。
思路:通俗一點說,每隔k個反轉k個,末尾不夠k個時全部反轉;
class Solution:def reverseStr(self, s: str, k: int) -> str:left, mid, right = 0, k, 2 * k # 初始化左中右指針res = '' # 初始化結果字符串while len(res) < len(s): # 滿足條件時執行res += s[left:mid][::-1] + s[mid:right] # 把當前單元的結果添加到結果字符串left, mid, right = left + 2 * k, mid + 2 * k, right + 2 * k return res # 返回結果
?