欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2023-12-21 16:07:40
...

在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);
    }

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

上一篇:

下一篇: