力扣-字符串-反转字符串

文章提供了两种Java解法来反转字符串。第一种是简单的双指针交换法,通过一个循环即可完成。第二种方法处理了反转部分的问题,将字符串分为前后两段,在每段内反转,并考虑边界条件,如反转区域超出原字符串长度的情况。

 

解法:

不需要啥解法,一个循环就结束了。

class Solution {
    public void reverseString(char[] s) {
        int start=0;
        int end=s.length-1;
        while(start<end){
            char temp=s[end];
            s[end]=s[start];
            s[start]=temp;

            start++;
            end--;
        }
    }
}

解法:

分为前k和k到2k,两个区间去操作,前面的操作都是一样的仅仅需要最后一点进行判断。

最后一点如果小于k,全部反转,那么我们可以让startk到结尾。

如果大于k小于2k,那么stark逻辑正常,我们让endk到结尾在添加就好了。

class Solution {
    public String reverseStr(String s, int k) { 
        int leng=s.length();
        int start=0;
        StringBuilder sb=new StringBuilder();
        while(start<leng){
            StringBuilder temp=new StringBuilder();

            int startk=(start+k>leng)?leng:start+k;
            int endk=(start+2*k>leng)?leng:start+2*k;

            //每次循环都会创建一个新的temp容器,局部代码块
            temp.append(s.substring(start,startk));
            sb.append(temp.reverse());

            if(startk<endk){
                sb.append(s.substring(startk,endk));
            }

            start+=2*k;


        }

        String result=sb.toString();
        return result;
    }
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值