Python刷leetcode--541.反转字符串 II

    科技2026-10-09  1

    # 给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 # # # 如果剩余字符少于 k 个,则将剩余字符全部反转。 # 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 # # # # # 示例: # # 输入: s = "abcdefg", k = 2 # 输出: "bacdfeg" # # # # # 提示: # # # 该字符串只包含小写英文字母。 # 给定字符串的长度和 k 在 [1, 10000] 范围内。 # # Related Topics 字符串 # 👍 97 👎 0 # 541.反转字符串 II class Solution: def reverseStr(self, s: str, k: int) -> str: s = list(s) flag = 0 lenght = len(s) while flag < lenght: # if flag + k > lenght: # return ''.join(s) pre = flag # pre代表每次的最前面的 cur = 0 for _ in range(k // 2): if flag + k > lenght and flag <= lenght - cur - 1: s[flag], s[lenght - cur - 1] = s[lenght - cur - 1], s[flag] flag += 1 cur += 1 elif flag > lenght - cur - 1: break else: s[flag + cur], s[flag - cur + k - 1] = s[flag - cur + k - 1], s[flag + cur] cur += 1 flag = pre + 2 * k return ''.join(s) if __name__ == '__main__': sol = Solution() # print(sol.reverseStr('abcdefg', 2)) # print(sol.reverseStr('a', 2)) # print(sol.reverseStr("abcdefge", 3)) # print(sol.reverseStr("abcdefg", 8)) # print(sol.reverseStr("abcdefg", 7)) print(sol.reverseStr("abcdefg", 1213))
    Processed: 0.010, SQL: 12