力扣Lc29---- 541. 反转字符串 II(java版)-2024年4月06日

文章介绍了如何使用Java编程语言,通过Solution类的reverseStr方法,对给定字符串按指定长度k进行分块并反转每块的前k个字符,最终实现整个字符串的反转。例如,当字符串长度为7,k为2时,最终结果为bacdfeg。
摘要由CSDN通过智能技术生成

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);//将字符数组对象变成字符串

    }
}
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);//将字符数组对象变成字符串

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值