zoukankan      html  css  js  c++  java
  • LeetCode 541. 反转字符串 II

    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
    
  • 相关阅读:
    Unlocker(强力删除文件工具) 1.9.2 汉化绿色版
    js 用blob来显示存储资源,并清除其他资源
    js 创建音频声音
    兼容 线性渐变
    @font-face 兼容写法
    中国行政区域划分 爬虫工具
    前端中的spring实现
    css命名规范
    sass 备忘命令
    charles 破解命令
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14586213.html
Copyright © 2011-2022 走看看