LeetCode541.反转字符串II

news2024/9/20 18:42:57

541.反转字符串II

简单的反转不够看,来一手花式反转

  • 题目描述

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

1、如果剩余字符少于k个,则将剩余字符全部反转

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

在这里插入图片描述

  • 题解

这里先解释一下题目的意思,以及所给出的示例

这道题呢,结合示例1来看,s=“abcdefg”,给出的k=2

那么2k就等于4

根据题目的意思,我们需要从字符串开头算起,找到第2k个字符,也就是d,然后我们需要反转a-d这四个字符的前k个字符,也就是反转前两个字符,a和b

所以此时得到“bacdefg”

接下来继续计数,后面的efg,只剩下三个字符,小于2k,但是大于k,所以反转前k个字符,也就是e和f

所以得到“bacdfeg”

接下来只剩下1个字符g,小于k,所以原地反转

最终的结果为“bacdfeg“

这道题我们使用双指针解法,因为本质还是交换两个数组中元素的位置,只不过额外的限制条件多了

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

总结一句话就是,每隔2k个字符,就反转前k个字符,不够2k个字符,字符全部反转

    public String reverseStr(String s, int k) {
        //将字符串转为char数组
        char[] ch = s.toCharArray();
        //i每次加2k个单位
        for(int i=0;i<ch.length;i+=2*k){
            //起始位置指针
            int start = i;
            //终止位置指针
            //判断尾数够不够k个来决定end的位置
            int end = Math.min(ch.length-1,start+k-1);
            while(start<end){
                char temp = ch[start];
                ch[start] = ch[end];
                ch[end] = temp;
                start++;
                end--;
            }
        }
        return new String(ch);
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIP-Storage-H13-624 v5.0 题库真题和机构资料

华为认证存储高级工程师HCIP-Storage V5.0&#xff08;中文版&#xff09;自2020年11月27日起&#xff0c;正式中国区发布。 机构的考试大纲、录播课程、考试题库&#xff0c;有需要的同学自行领取哈&#xff1a; HCIA、HCIP-storage存储资料---提取码:1234https://pan.baidu…

【Git】标签管理与Git Flow模型

目录 一、操作标签 二、推送标签 三、删除标签 四、Git Flow模型分支设计 一、操作标签 git tag # 查看有哪些标签 git tag [name] # 给最近一次commit打标签 git tag [name] [commitID] #给指定的commit打标签 git tag -a [name] -m desc # 打标签并添加描述 二、推送标…

深入了解 PostgreSQL 扩展插件

深入了解 PostgreSQL 扩展插件 在 PostgreSQL 数据库中&#xff0c;扩展插件是极具价值的工具&#xff0c;它们为我们提供了丰富多样的功能增强。本篇博客将深入介绍几个常用的 PostgreSQL 扩展插件&#xff0c;包括 pg_stat_statements、uuid、postgis 以及 postgis_raster。…

解决Linux下PyCharm无法新建文件

一、问题描述 如图&#xff0c;在Ubuntu Linux系统中使用pycharm管理项目时&#xff0c;提示无法新建.py源文件&#xff1a; 二、问题解决 将问题定性为文件夹&#xff08;目录&#xff09;权限问题&#xff0c;在终端中打开项目文件夹的上级目录&#xff0c;将整个项目目录的…

勒索软件Epsilon Red:Microsoft Exchange服务器新威胁

虽然Microsoft Exchange针对存在的代码漏洞一直更新补丁&#xff0c;但这并未能阻止网络黑客停手。最新发现&#xff0c;一种自称为 Epsilon Red的新型勒索软件&#xff0c;利用Microsoft Exchange服务器的系统漏洞对网络上的机器进行加密。在进入加密阶段之前&#xff0c;Epsi…

使用公式与格式控制Excel快速实现计划甘特图

项目中都会遇到做任务计划的需求&#xff0c;有的客户要求需要有甘特图的形式本文介绍如何使用excel 单元格实现甘特图显示&#xff0c;调整任务时间自动填充单元格填色实现甘特图效果。废话不多说&#xff0c;先看效果。 准备工作先创建两列开始时间与完成时间&#xff0c;这…

山西电力市场日前价格预测【2023-08-05】

日前价格预测 预测明日&#xff08;2023-08-05&#xff09;山西电力市场全天平均日前电价为445.97元/MWh。其中&#xff0c;最高日前电价为486.65元/MWh&#xff0c;预计出现在19: 30。最低日前电价为403.37元/MWh&#xff0c;预计出现在13: 15。 价差方向预测 1&#xff1a; 实…

牛客周赛 Round 5

# 游游的字母变换题目大意 对给定的字符串进行变换&#xff0c;将大写字母变为下一个字母&#xff0c;小写字母变为上一个字母&#xff0c;其他字符不做变换。 思路分析 如果字符是大写字母&#xff0c;则判断是否为’Z’&#xff0c;如果是则变为’A’&#xff0c;否则将其…

国内物流园区数字化改革趋势

随着科技的进步和物流业的发展&#xff0c;数字化技术在物流园区的应用逐渐普及。数字化管理和物联网技术使得物流园区的运营更加智能化、高效化&#xff0c;并提供更优质的服务&#xff0c;本文和大家一起了解一下国内物流园区数字化改革现状和进程。 国内数字化园区数字化改…

【C++】模拟实现string

目录 &#x1f31e;专栏导读 &#x1f31b;定义string类 &#x1f31b;构造函数 &#x1f31b;拷贝构造函数 &#x1f31b;赋值函数 &#x1f31b;析构函数 &#x1f31b;[]操作符重载 &#x1f31b;c_str、size、capacity函数 &#x1f31b;比较运算符重载 &#…

CuratorFramework接口的作用和使用

CuratorFramework接口是Apache Curator库中的核心接口之一&#xff0c;用于与ZooKeeper集群进行交互。它提供了一组丰富的方法和功能&#xff0c;用于简化与ZooKeeper的交互操作&#xff0c;包括创建、删除、读取和更新节点等。 CuratorFramework接口的主要作用是封装了底层与…

uni-app:实现列表单选功能

效果图&#xff1a; 核心解析&#xff1a; 一、 <view class"item_all" v-for"(item, index) in info" :key"index"><view classposition parameter-info text-over :classitem.checked?"checked_parameter":""…

【华秋推荐】物联网入门学习模块 ESP8266

随着全球信息技术的不断进步和普及&#xff0c;物联网成为当今备受关注的技术热点之一。通过物理和数字设备之间的连接来实现自动化和互联互通的网络。无线传感器、云计算和大数据分析等技术&#xff0c;物联网使设备能够相互交流和共享信息&#xff0c;实现智能化的自动化操作…

从k8s 的声明式API 到 GPT的 提示语

命令式 命令式有时也称为指令式&#xff0c;命令式的场景下&#xff0c;计算机只会机械的完成指定的命令操作&#xff0c;执行的结果就取决于执行的命令是否正确。GPT 之前的人工智能就是这种典型的命令式&#xff0c;通过不断的炼丹&#xff0c;告诉计算机要怎么做&#xff0…

真的能缓解焦虑和负面情绪的一个技巧——进度条

我之前博客——https://blog.csdn.net/qq_41517071/article/details/129793252 负面情绪原因 当代负面情绪无法及时下线&#xff0c;导致情绪出现帮倒忙的情况。此情况主要由两种原因导致&#xff1a;①无发泄出口。人类社会身不由己&#xff0c;无法找到合适的发泄出口。②…

【超细节】Vue3组件事件怎么声明,defineEmits与emit

目录 前言 一、基本语法 1. 子组件触发 2. 父组件监听 二、 事件参数 1. 传值 2. 接收值 三、 事件校验 四、注意事项 前言 组件事件是 Vue 组件之间进行通信的一种方式。它允许一个组件触发一个自定义事件&#xff0c;并且其他组件可以监听并响应这个事件。 一、基本…

1308. 方程的解(隔板法)

题目链接&#xff1a;https://www.acwing.com/activity/content/problem/content/1761/ 本题需要用高精度 Code #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 150;int k, x; int f[1000][100][N];int qm…

Docker实战-如何去访问Docker仓库?

导语   仓库在之前的分享中我们介绍过,它主要的作用就是用来存放镜像文件,又可以分为是公共的仓库和私有仓库。有点类似于Maven的中央仓库和公司内部私服。 下面我们就来介绍一下在Docker中如何去访问各种仓库。 Docker Hub 公共镜像仓库 Docker Hub 是Docker官方提供的最…

基于JAVA SpringBoot和HTML校园二手商城系统设计

随着网络技术的飞跃&#xff0c;人类的社会生活和现代信息技术呈现出不断融合的趋势&#xff0c;生活中的日常账单支付、网上购物、网上学习和娱乐等。二手交易平台应运而生&#xff0c;其主要目的是充分交换人们闲置的产品。你可以在交易平台上发布二手商品&#xff0c;然后有…

promise中then和catch同时调用

promise同时执行then和catch 之前一直对promise中的then函数和catch有误区&#xff0c;以为resolve就直接走then&#xff0c;reject走catch&#xff0c;但在最近项目中遇到了then和catch同时触发。 下面我们来看一组例子 let count 0const func async () > {countComput…