首页 > 其他 > 详细

LeetCode 541. 反转字符串 II

时间:2021-03-27 22:08:22      阅读:15      评论:0      收藏:0      [点我收藏+]

541. 反转字符串 II

Difficulty: 简单

给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

示例:

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

提示:

  1. 该字符串只包含小写英文字母。
  2. 给定字符串的长度和 k[1, 10000] 范围内。

Solution

注意两个边界条件的控制:

  1. 每隔 2k 个字符的前 k 个字符进行反转,意味着第一个k间距反转,第二个k间距不反转,奇偶
  2. 剩余字符的处理问题,题目说得很懵,一不小心就被绕进去了,如果剩余字符串不足2k个,对[i, min(i+k-1, len(s)-1)]做反转
class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        l = list(s)
        for i, _ in enumerate(l):
            if (i / k) % 2 == 0:
                l = self.reverse(l, i, min(i+k-1, len(s)-1))
            else:
                continue
        return "".join(l)
        
    def reverse(self, arr, start, end):
        while start < end:
            arr[start], arr[end] = arr[end], arr[start]
            start += 1
            end -= 1
        return arr

LeetCode 541. 反转字符串 II

原文:https://www.cnblogs.com/swordspoet/p/14586213.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!