(字符串) 541. 反转字符串 II——【Leetcode每日一题】

news2024/12/23 7:49:11

❓541. 反转字符串 II

难度:简单

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

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

示例 1:

输入:s = “abcdefg”, k = 2
输出:“bacdfeg”

示例 2:

输入:s = “abcd”, k = 2
输出:“bacd”

提示

  • 1 < = s . l e n g t h < = 1 0 4 1 <= s.length <= 10^4 1<=s.length<=104
  • s 仅由小写英文组成
  • 1 < = k < = 1 0 4 1 <= k <= 10^4 1<=k<=104

💡思路:模拟

我们直接按题意进行模拟:

  • 反转每个下标从 2k 的倍数开始的,长度为 k 的子串。
  • 若该子串长度不足 k,则反转整个子串。

🍁代码:(Java、C++)

Java

class Solution {
    public String reverseStr(String s, int k) {
        char[] ch = s.toCharArray();
        int n = s.length();
        for(int i = 0; i < n; i += 2 * k){
            int left = i;
            int right = Math.min(n - 1, i + k - 1);
            while(left < right){
                char temp = ch[left];
                ch[left++] = ch[right];
                ch[right--] = temp;
            }
        }
        return new String(ch);
    }
}

C++

class Solution {
public:
    string reverseStr(string s, int k) {
        for(int i = 0; i < s.size(); i += 2 * k){
            if(i + k - 1 < s.size()){
                reverse(s.begin() + i, s.begin() + i + k);
            }else{
                reverse(s.begin() + i, s.end());
            }
        }
        return s;
    }
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为字符串 s 的长度。
  • 空间复杂度 O ( 1 ) O(1) O(1) O ( n ) O(n) O(n),取决于使用的语言中字符串类型的性质。如果字符串是可修改的(C++),那么我们可以直接在原字符串上修改,空间复杂度为 O ( 1 ) O(1) O(1),(Java)否则需要使用 O ( n ) O(n) O(n) 的空间将字符串临时转换为可以修改的数据结构(例如数组),空间复杂度为 O ( n ) O(n) O(n)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!

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

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

相关文章

【dns awsl】RedHat8配置DNS服务器

文章目录 一、安装 配置DNS验证 一、安装 配置DNS 安装 sudo dnf install bind bind-utils配置named.conf 指定正向解析和反向解析的所需文件 vim /etc/named.conf在文件中找到options部分&#xff0c;并进行如下修改&#xff1a;options {listen-on port 53 { any; };allow…

day02——特征工程之特征提取

特征工程之特征提取 一、什么是特征工程二、特征提取1&#xff0c;字典特征提取2&#xff0c;文本特征提取&#xff08;1&#xff09;英文文本特征提取&#xff08;2&#xff09;中文文本特征提取&#xff08;3&#xff09;Tf-idf 文本特征提取 一、什么是特征工程 特征工程是…

CRM和SCRM有什么区别?

首先讲下CRM是什么&#xff1f;光是概念就有7个之多&#xff1a; 提出者概念GartnerGroupCRM是一种商业策略&#xff0c;它按照客户的分类情况有效地组织企业资源&#xff0c;培养以客户为中心的经营行为以及实施以客户为中心的业务流程&#xff0c;并以此为手段来提高企业的赢…

低代码平台安全性探究:解析低代码平台的安全性及应对措施

近年来&#xff0c;低代码平台由于能够以最少的代码快速开发应用程序而变得越来越流行。然而&#xff0c;随着数据泄露和网络威胁的增加&#xff0c;企业有理由质疑低码平台是否安全。在本文中&#xff0c;我们将探讨低代码平台安全吗&#xff1f; 一、低码平台如何工作。 在我…

集成websocket实现实时通信(ruoyi 使用笔记)

集成websocket实现实时通信(ruoyi 使用笔记 1.简单介绍WebSocket2.详细代码2.1WebSocketConfig2.2 SemaphoreUtils2.3 WebSocketServer2.4 WebSocketUsers2.5 html2.6 vue版本前端代码2.7 controller 1.简单介绍WebSocket Websocket 是一种基于 TCP 协议的全双工通信协议&#…

加油站“变身”快充站,探讨充电新模式

摘要&#xff1a;新能源汽车规模化发展的同时&#xff0c;充电不便利的痛点愈发明显。在未来的新能源汽车行业发展当中&#xff0c;充电的矛盾要远远大于造车的矛盾&#xff0c;解决好充电的问题成为电动汽车行业发展的一个突出问题。解决充电补能问题&#xff0c;重要的方式之…

自动化测试还是手动测试?深度探讨Web自动化测试的利与弊,精准性和可靠性抉择应如何。

目录 前言&#xff1a; 1. 自动化测试的价值 2. 自动化测试的瓶颈 总结 前言&#xff1a; 随着互联网的飞速发展&#xff0c;Web应用越来越成为我们日常工作和生活中必不可少的一部分。这也就意味着&#xff0c;Web应用的质量和稳定性变得至关重要。而Web自动化测试作为保…

87.建立主体页面-第三部分

上节我们完成的页面如下&#xff1a; ● 我们预计在按钮下面放置一些用户案例 去年我们送了25万多份餐品! ![在这里插入图片描述](https://img-blog.csdnimg.cn/c71d57199b834a8c9763a345939adc5d.png) ● 我们将这些图片文字以flex布局方式排列摆放 .delivered-meals {dis…

ebpf代码编写小技巧

查看所有tracepoint perf list perf追踪tracepoint perf trace --no-syscalls --event net:*查看tracepoint的具体参数 sudo python3 /usr/share/bcc/tools/tplist -v net:napi_gro_receive_entry cat /sys/kernel/debug/tracing/events/net/netif_rx/format内核vmlinux.h生…

Zinx框架学习 - 链接封装与业务绑定

Zinx - V0.2 链接封装与业务绑定 之前的v0.1版本&#xff0c;已经实现了一个基础的Server框架&#xff0c;现在需要对客户端链接和不同的客户端链接锁处理的不同业务再做一层接口封装在ziface下创建一个属于链接的接口文件iconnection.go&#xff0c;znet下创建文件connection…

异步利刃CompletableFuture

什么是CompletableFuture? CompletableFuture 类实现了 Future 和 CompletionStage 接口并且新增了许多方法&#xff0c;它支持 lambda&#xff0c;通过回调利用非阻塞方法&#xff0c;提升了异步编程模型。简单来说可以帮我们实现任务编排。【文中所有代码已上传码云】 Com…

程序员必修必炼的设计模式之工厂模式

本文首发自「慕课网」&#xff08;www.imooc.com&#xff09;&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"或慕课网公众号&#xff01; 作者&#xff1a;李一鸣 | 慕课网讲师 工厂模式是平时开发过程中最常见的设计模式…

15.3:最多做K个项目,初始资金是W,返回最大资金

输入正数数组costs、正数数组profits、正数K和正数M costs[i]表示i号项目的花费 profits[i]表示i号项目在扣除花费之后还能挣到的钱(利润) K表示你只能串行的最多做k个项目 M表示你初始的资金 说明&#xff1a;每做完一个项目&#xff0c;马上获得的收益&#xff0c;可以支持你…

FP独立站支付渠道市场逐渐向好!信用卡和AB轮询哪个好?

之前一篇文章写过品牌方使用ChatGPT技术检测FP网站&#xff0c;对FP独立站的收款起到了很大的影响。今天是6月的第一天&#xff0c;我为各位带来了一个好消息&#xff01;那就是在过去的3-5月份&#xff0c;信用卡收款实行整顿&#xff0c;目前支付渠道都有所松动。例如&#x…

好孩子福利|Sup游戏机,一秒回到童年

这份六一礼物对儿童来说有点幼稚&#xff0c;但对程序员刚刚好&#xff5e; ​ Sup 游戏机&#xff0c;一秒回到童年&#xff01; 到底有多好玩呢&#xff1f;可以参考 B 站试玩视频&#xff01; 太火鸟好物推荐——掌上游戏机sup 参加流程&#xff1a; STEP 1&#xff1a;扫…

以太网——MDIO(SMI)接口的FPGA实现

在 MAC 与 PHY 之间&#xff0c;有一个配置接口&#xff0c;即 MDIO&#xff08;也称 SMI&#xff0c;Serial Management Interface&#xff09;&#xff0c;可以配置 PHY 的工作模式、获取 PHY 芯片的工作状态等。本文以 PHY 芯片 B50610 为例&#xff0c;实现 MDIO 接口&…

NUC972 Linux学习 NAND FLASH 制作系统

设备&#xff1a;NUC972DF61YC 使用的虚拟机环境&#xff1a;官方提供的NUC972DF61YC - Nuvoton 板载NAND FLASH&#xff0c;前期主要学习怎么uboot、ubootspl、uimage、env烧录。官方配置没有使用rootfs在flash中&#xff0c;所以数据会掉电丢失。即文件系统在RAM中。 这里仅…

基于Jackson实现API接口数据脱敏

一、背景 用户的一些敏感数据&#xff0c;例如手机号、邮箱、身份证等信息&#xff0c;在数据库以明文存储&#xff08;加密存储见《基于Mybatis-Plus拦截器实现MySQL数据加解密》&#xff09;&#xff0c; 但在接口返回数据给浏览器&#xff08;或三方客户端&#xff09;时&a…

设计一个支持并发的前端接口缓存

目录​​​​​​​ 缓存池 并发缓存 问题 思考 优化&#x1f914; 总结 最后 缓存池 缓存池不过就是一个map&#xff0c;存储接口数据的地方&#xff0c;将接口的路径和参数拼到一块作为key&#xff0c;数据作为value存起来罢了&#xff0c;这个咱谁都会。 const cach…

DTU和MQTT网关优缺点

目前市面上有两种设备实现Modbus转MQTT网关。网关式、DTU式。 钡铼技术网关内部进行转换 网关式 优点&#xff1a; 1、通讯模块和MCU分开&#xff0c;通讯模块只做通讯功能&#xff0c;协议转换有单独主控MCU&#xff0c;“硬转换”&#xff1b; 2、数据点是通过映射到主控…