码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 力扣Lc29---- 541. 反转字符串 II(java版)-2024年4月06日


    1.题目描述

    在这里插入图片描述
    2.知识点
    (1)执行步骤如下:
    初始化 s = “abcdefg” 和 k = 2
    将字符串分割成长度为 2k = 4 的块。
    对每个块中的前 k = 2 个字符进行反转。
    执行过程
    1)第一次循环(i = 0)
    start = 0
    end = Math.min(0 + 2 - 1, 7 - 1) = 1
    反转 chars[0] 和 chars[1],得到 [“b”, “a”, “c”, “d”, “e”, “f”, “g”]
    2)第二次循环(i = 4)
    start = 4
    end = Math.min(4 + 2 - 1, 7 - 1) = 5
    反转 chars[4] 和 chars[5],得到 [“b”, “a”, “c”, “d”, “f”, “e”, “g”]
    结果
    最终,字符数组变为 [“b”, “a”, “c”, “d”, “f”, “e”, “g”],转换为字符串后为 “bacdfeg”。
    3.代码实现

    class Solution {
        public String reverseStr(String s, int k) {
    
            char[] cs=s.toCharArray();//将字符串变成字符数组
    
            for(int i=0;i<s.length()-1;i+=2*k)
            {
                int start=i;
                int end=Math.min(i+k-1,s.length()-1);
    
                while(start<end)
                {
                    char temp=cs[start];
                    cs[start]=cs[end];
                    cs[end]=temp;
                    start++;
                    end--;//这个作用是让首尾指针相遇或交叉
                }
               
            }
             return new String(cs);//将字符数组对象变成字符串
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    class Solution {
        public String reverseStr(String s, int k) {
    
            char[] cs=s.toCharArray();//将字符串变成字符数组
    
            for(int i=0;i<s.length()-1;i+=2*k)//比如字符长7,k=2,第一次遍历i=0,遍历范围0~1(里面索引为0,1的进行反转,这边索引4取不到)
            //第二次遍历4~5                   
            //s=7,k取2,2k=4,  4里面取前k=2个进行反转,剩下3个字符 2<=剩下的字符<4, 所以再套娃 再前k个进行反转
            {
                int start=i;
                int end=Math.min(i+k-1,s.length()-1);
    
                while(start<end)
                {
                    char temp=cs[start];//因为temp暂存字符变量  ,所以char类型
                    cs[start]=cs[end];
                    cs[end]=temp;
                    start++;
                    end--;//这个作用是让首尾指针相遇或交叉
                }
               
            }
             return new String(cs);//将字符数组对象变成字符串
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
  • 相关阅读:
    obsidian加git备份,同时忽略掉自己不想同步的文件夹
    OA系统必备的五个基本要素
    【.Net实用方法总结】 整理并总结System.IO中BufferedStream类及其方法介绍
    开放式运动耳机哪款好,盘点几款目前最好的开放式耳机分享
    电脑小技巧45个
    NPS:使用 Windows NPS Server 部署 802.1X 无线认证(2)
    【SpringBoot】当AOP引发的异常与@RestControllerAdvice擦肩而过:异常处理的盲点揭秘
    【Jmeter+Influxdb+Grafana性能监控平台安装与部署】
    java计算机毕业设计健身俱乐部管理系统源码+mysql数据库+系统+lw文档+部署
    ai智能电话机器人语音识别技术
  • 原文地址:https://blog.csdn.net/zsysingapore/article/details/137438914
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号