当前位置: 首页 > news >正文

LeetCode541. Reverse String II -- 按步长反转字符串

描述

Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.

Example:

Input: s = "abcdefg", k = 2
Output: "bacdfeg"

分析

这是一个字符串反转的问题,只是这里多了一个步长k的参数。如果前k个参数进行了反转,则后k个字符串不进行反转。因此我们可以设置一个标志位flag,如果为True,则对接下来k个字符串反转,否则保持原状。每k步对flag进行一次取反。

代码

class Solution:
    def reverseStr(self, s, k):
        """
        :type s: str
        :type k: int
        :rtype: str
        """
        flag = False
        temp = ""
        for i in range(0, len(s), k):
            flag = not flag
            stop = i+k
            if stop > len(s):
                stop = len(s)
            if flag:
                temp += s[i:stop][::-1]
            else:
                temp += s[i:stop]
        return temp

优化

看了下beats 100%的代码,以2k为步长,则每次迭代只需将反转之前的、反转的和反转之后的三部分加起来,即每2k个字符是一个子问题:

for idx in range(0, len(s), 2*k):
    s = s[:idx] + s[idx:idx+k][::-1] + s[idx+k:]
return s

相关文章:

  • 三菱加工中心CNC编程G代码讲解
  • MongoDB可视化工具--Robo 3T 使用教程
  • Php数据库
  • 项目集成springboot【JWordpres前台项目实战】
  • Sublime Text3 配置
  • ALTER SYSTEM ARCHIVELOG CURRENT挂起案例
  • Mblog 部署手册
  • iOS组件化(一):创建本地私有库
  • linux top 命令
  • HeyUI组件库发布vscode插件,PS教程: 如何开发vscode插件?
  • thinkphp3.2.3 定时任务重新加载, 无法加载新的定时任务的问题
  • PHP中使用Elasticsearch
  • WebView性能、体验分析与优化
  • MDT2013批量升级Win7客户端至Win10
  • 第22章,mysql数据库-1
  • Angular6错误 Service: No provider for Renderer2
  • golang 发送GET和POST示例
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • js数组之filter
  • React16时代,该用什么姿势写 React ?
  • select2 取值 遍历 设置默认值
  • SQL 难点解决:记录的引用
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 前端自动化解决方案
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • ​ssh免密码登录设置及问题总结
  • !!java web学习笔记(一到五)
  • # .NET Framework中使用命名管道进行进程间通信
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #微信小程序(布局、渲染层基础知识)
  • #微信小程序:微信小程序常见的配置传值
  • (1)(1.9) MSP (version 4.2)
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)EXC_BREAKPOINT僵尸错误
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net 知识杂记
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .NET连接数据库方式
  • .NET下的多线程编程—1-线程机制概述
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET运行机制
  • ::什么意思
  • @WebServiceClient注解,wsdlLocation 可配置
  • @在php中起什么作用?
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [C#小技巧]如何捕捉上升沿和下降沿
  • [C++]Leetcode17电话号码的字母组合
  • [C++提高编程](三):STL初识
  • [cocos2d-x]关于CC_CALLBACK
  • [DevOps云实践] 彻底删除AWS云资源