java实现将一个字符串指定部分反转

在String类中,有时候需要对一个字符串进行反转,而且是对字符串中的一部分进行反转,比如是"abcdefg" ------> “abfedcg”
像是以上这种方式,具体实现的算法有很多,这里列出来三种进行实现

//方式一:
    public String reverse1(String str,int start,int end){
        //将字符串转换为字符数组
        char[] arr = str.toCharArray();
        //遍历字符数组
        for (int x = start,y = end; x < y; x++,y--) {
            //交换指定范围内的数值
            char temp = arr[x];
            arr[x] = arr[y];
            arr[y] = temp;
        }
        //将字符数组转换为字符串
        return new String(arr);
    }
//方式二:使用String拼接
    public String reverse2(String str,int start,int end){
        //第一部分,使用String的substring()进行拼接第一部分
        String reverseStr = str.substring(0,start);
        //第二部分,从后往前遍历,将需要反转的范围拼接一起
        for (int i = end; i > start ; i--) {
            reverseStr += str.charAt(i);
        }
        //第三部分,将后面部分继续使用substring()拼接
        reverseStr += str.substring(end);
        return reverseStr;

    }
//方式三:
    public String reverse3(String str,int start,int end){
        //实例化一个StringBuffer对象,数组长度为str
        StringBuilder stringBuilder = new StringBuilder(str.length());
        //第一部分,将第一部分添加到stringBuffer中
        stringBuilder.append(str.substring(0,start));
        //第二部分,将第二部分使用遍历的方式,和String的charAt()进行拼接
        for (int i = end;i >= start;i--){
            stringBuilder.append(str.charAt(i));
        }
        //第三部分,将最后一部分使用substring()进行拼接
        stringBuilder.append(str.substring(end + 1));
        //转换为String类型
        return stringBuilder.toString();
    }

方式三可以看作是对方式二的一个优化,StringBuffer/StringBuilder 要优化于String,免除了String类使用中反复的new对象。
下面看一下运行结果,使用单元测试的方法进行测试

@Test
    public void test1(){
        String str = "abcdefj";
        String restr = reverse3(str,2,5);
        System.out.println(restr);
    }

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧码文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值