• 力扣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
  • 相关阅读:
    GO编程实践:如何高效使用变量
    CSS 滚动驱动动画 scroll-timeline ( scroll-timeline-name ❤️ scroll-timeline-axis )
    80岁还嗖嗖改代码,他是Unix命名人,发明“Hello World”,他说解决问题全靠拖
    App自动化测试持续集成效率提高50%
    Java客户端_Apache Curator操作Zookeeper
    嵌入式软件架构设计-消息交互
    性能问题从发现到优化一般思路
    Python 数据分析学习路线
    Spark 安装与启动
    3ds Max 基于PC系统的3D建模渲染和制作软件
  • 原文地址:https://blog.csdn.net/zsysingapore/article/details/137438914