反转字符串II(力扣刷题)

news/2024/5/18 23:57:32/文章来源:https://blog.csdn.net/m0_65635427/article/details/129892413

        给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

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

这道题目其实也是模拟,实现题目中规定的反转规则就可以了。

一些同学可能为了处理逻辑:每隔2k个字符的前k的字符,写了一堆逻辑代码或者再搞一个计数器,来统计2k,再统计前k个字符。

其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。

因为要找的也就是每2 * k 区间的起点,这样写,程序会高效很多。

所以当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章。

那么这里具体反转的逻辑我们要不要使用库函数呢,其实用不用都可以,使用reverse来实现反转也没毛病,毕竟不是解题关键部分。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-string-ii

C++代码如下:

自定义函数法

class Solution {
public:void reverse(string& s, int start, int end){for(int i = start, j = end; i < j; i++, j--){swap(s[i], s[j]);}}string reverseStr(string s, int k) {for(int i = 0; i < s.size(); i += 2 * k){if(i + k <= s.size()){reverse(s, i , i + k - 1);continue;}reverse(s, i, s.size() - 1);}return s;}
};


库函数法:

class Solution {
public:string reverseStr(string s, int k) {for (int i = 0; i < s.size(); i += (2 * k)) {// 1. 每隔 2k 个字符的前 k 个字符进行反转// 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符if (i + k <= s.size()) {reverse(s.begin() + i, s.begin() + i + k );} else {// 3. 剩余字符少于 k 个,则将剩余字符全部反转。reverse(s.begin() + i, s.end());}}return s;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_658504.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图片怎么转PDF文件格式?推荐这五个免费无损转换方法!

如何将图片转换为PDF&#xff1f;图片格式文件经常用于每个人的日常生活中&#xff0c;但有时候。我们会将多张图片转换为一份PDF文件进行单个文件传输&#xff0c;但很多人不知道如何将图片转换为PDF格式。 今天&#xff0c;我将与大家分享五种简单免费的无损转换方法&#x…

【CVPR小目标检测】- ISNet红外小目标检测

ISNet&#xff1a;红外小目标探测的形状问题 ——从分割的角度完成小目标红外检测红外图像&#xff1a; 红外小目标使用红外热成像技术&#xff0c;使得红外目标检测能够全天候工作&#xff0c;可视距离远&#xff0c;抗干扰能力强。当像素距离较远时&#xff0c;目标所占比例…

记录如何把postman变成为中文版

首先点击下方这个链接&#xff0c;进入gitee&#xff0c;在里面下载一个插件 Releases hlmd/Postman-cn GitHub 进来是这个样子&#xff1a; 看一下自己的postman是什么版本的&#xff0c;然后在gitee下载对应的APP包 应该怎么查看我的postman版本号呢&#xff1f; ~~看下…

代理模式:JDK动态代理和静态代理回顾

背景&#xff1a;Spring主要有两大思想&#xff1a;IoC、AOP。对于IoC依赖注入不多说了&#xff0c;对于Spring的核心AOP来说&#xff0c;我们需要了解其底层的实现原理&#xff1a;java的动态代理机制。 本篇随笔就是对java的动态机制进行一个回顾。 代理模式的理解 类型&…

三甲医院手术麻醉系统源码, C# .net 桌面软件 C/S版源码

手术麻醉管理系统源码&#xff0c;手麻系统源码&#xff0c;大型医院手术麻醉系统源码 相关技术&#xff1a;C#语言 前端框架&#xff1a;Winform 后端框架&#xff1a;WCF 数 据库&#xff1a;sqlserver VS2019 文末获取联系 手术麻醉系统是面向医生实际工作情况开发的专…

Excel宏(VBA)密码破解

最近在研究一个Excel宏&#xff0c;想查看VBA代码但是有密码&#xff0c;于是想着能不能移除密码。网上查找一番资料后进行了尝试。 一&#xff0c;准备工具 ExcelHex Editor Neo 二&#xff0c;开始实践 首先将.xlsm后缀名的文件改为.zip文件 然后双击zip文件(不用解压文件…

字节跳动CVPR 2023论文精选来啦(内含一批图像生成新研究)

计算机视觉领域三大顶会之一的 CVPR 今年已经开奖啦。 今年的 CVPR 将于六月在加拿大温哥华举办&#xff0c;和往年一样&#xff0c;字节跳动技术团队的同学们收获了不少中选论文&#xff0c;覆盖文本生成图像、语义分割、目标检测、自监督学习等多个领域&#xff0c;其中不少…

AUTOSAR SecOC的CAN FD应用

20多年来&#xff0c;CAN一直是并且仍然是车辆中的主导通信系统。 随着车载功能日益复杂&#xff0c;传统CAN已无法满足对有效数据速率日益增长的需求。 因此&#xff0c;引入了CAN FD—它允许高达64字节的有效载荷以实现2 Mbit/s 和5 Mbit/s的数据速率。为了将这一主要优势用于…

【CocosCreator入门】CocosCreator组件 | Mask(遮罩)组件

Cocos Creator 是一款流行的游戏开发引擎&#xff0c;具有丰富的组件和工具&#xff0c;其中Mask组件可用于创建如圆形、矩形和任意形状的遮罩效果&#xff0c;以限制节点显示的范围。这对于创建具有复杂布局的UI元素非常有用&#xff0c;例如只显示图片的一部分或控制文本显示…

C++相关面试题总结一——内存、关键字、STL、指针、排序、Lambda

面试题总结 基础 C是在C语言的基础上开发的一种面向对象编程语言&#xff0c;应用广泛。C支持多种编程范式&#xff1a;面向对象编程、泛型编程和过程化编程。其编程领域众广&#xff0c;常用于系统开发&#xff0c;引擎开发等应用领域&#xff0c;是最受广大程序员受用的最强…

JavaSE——方法的使用

目录 一、方法的概念及使用 1、什么是方法(method) 2、方法定义 3、方法调用的执行过程 4、实参和形参的关系 二、方法重载 1、为什么需要方法重载 2、方法重载概念 3、方法签名 三、递归 1、递归的概念 2、递归执行过程分析 3、递归练习 一、方法的概念及使用 1、…

【进阶C语言】内存函数(详解)

前言 上一期讲的函数都是和字符串相关的&#xff0c;但是我们在操作数据的时候&#xff0c;不仅仅是操作字符串的数据&#xff0c;还得需要内存函数的应用 内存函数的应用1. memcpy1.1 memcpy的介绍1.2 memcpy的使用1.3 模拟实现memcpy库函数1.4 我想在1&#xff0c;2后面打印1…

web学习---Vue---笔记(1)

该笔记是记录尚硅谷的Vue学习视频的笔记&#xff0c;视频地址为&#xff1a;学习视频地址 初始Vue Vue组件化的特点 组件化声明式编码虚拟DOMDiff算法&#xff0c;尽量复用DOM节点 H5的组件&#xff0c;是把某一个模块封装&#xff0c;里面写HTML\CSS\JS等&#xff0c;算是一…

关于软件发布等一系列注意事项

我们以VS for Qt 开发为案例 1、软件图标的使用&#xff1a; this->setWindowIcon(QIcon("写入路径"));注意这里的路径&#xff0c;一般需要你先添加图片到资源文件中 那么如何将图片添加到资源文件中呢&#xff1f; 1、打开qrc文件 2、添加前缀&#xff0c;添…

【Linux】八、Linux进程信号详解(一)

目录 一、认识信号 1.1 生活中的信号 1.2 将1.1的概念迁移到进程 1.3 信号概念 1.4 查看系统定义信号列表 1.5 man 7 signal 1.6 解释1.2的代码样例 1.7 信号处理常见方式概览 二、产生信号 2.1 signal函数 2.2 通过终端按键产生信号 2.3 调用系统函数向进程发信号…

Java小课堂:自定义注解(案例:自定义DecimalFormat注解)

文章目录 引言I 预备知识1.1 元注解1.2 Target注解的ElementType枚举1.3 Retention注解的RetentionPolicy枚举II 自定义注解2.1 基本条件2.2 注解自定义属性的格式III 案例3.1 自定义DecimalFormat注解3.2 自定义json序列化解析引言 需求: 编辑费率限制的值时填写几位就保存几…

动力节点王鹤SpringBoot3学习笔记——第五章 说说Web服务

目录 第五章 说说Web服务 5.1 高效构建Web应用 5.1.1 html页面视图 5.1.2 JSON视图 5.1.3 给项目加favicon 5.2 Spring MVC 5.2.1 控制器Controller 5.2.1.1 匹配请求路径到控制器方法 5.2.1.2 RequestMapping 5.2.1.3 控制器方法参数类型与可用返回值类型 5…

【从零开始学习 UVM】11.5、UVM Register Layer —— 后门访问 实战项目(RAL实战,交通灯为例)

文章目录 后门访问是什么?定义后门 HDL 路径示例sequence中的后门访问示例UVM寄存器模型允许使用前门访问DUT寄存器,就像我们之前在寄存器环境中看到的那样。 这意味着环境中的所有寄存器读写操作都会转换为总线事务,并驱动到设计的总线接口,就像典型系统中的任何其他硬件…

大数乘法【极简思路、代码模板】

793. 高精度乘法 - AcWing题库 极简思路 大数乘法可能和前面我们提到的大数减法 和 大数加法 的分治 思路不太一样&#xff0c;对于大数乘法我们可以有更加简单的思路。 这里提到的大数乘法&#xff0c;是针对与 一个很大的数 * 一个正常的整数 而不是两个超大整数相乘 所以这…

C学习:一个百思不得其解的无符号数移位问题

C学习&#xff1a;一个百思不得其解的无符号数移位问题问题背景验证分析参考资料问题背景 在做一个算法定点化移位过程中&#xff0c;遇到个奇怪问题&#xff1a;分别按无符号数和有符号数进行右移&#xff0c;竟然不管啥输入&#xff0c;res1和res2结果都一样。代码如下&#…