字符串反转操作:Java 多种方法

package time_3_30;

/*
    将字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为“abfedcg”
 */

public class StringDemo {
    public static void main(String[] args) {
        String str = new String("abcdefghi");

        Reverse rev = new Reverse();
        String str2 = rev.reverse(str,1,6); //反转字符串str[1,6)位置上的字符
        System.out.println(str2);

        Reverse1 rev1 = new Reverse1();
        String str3 = rev1.reverse(str2,1,6);
        System.out.println(str3);
    }

}

//方式一:将String转换为数组再反转
class Reverse{
    public String reverse(String str, int start, int end){
        if(str != null && str.length() != 0){
            char[] arr = str.toCharArray();     //将引用类型转换为数组;
            for(int x = start,y = end; x <= y/2; x++){
                char temp = arr[x];
                arr[x] = arr[y-x];
                arr[y-x] = temp;

            }
            return new String(arr);     //返回新的字符串
        }
        return null;

    }
}
//方式二:将需要反转的字符串反转,不需要反转的不操作
class Reverse1{
    public String reverse(String str, int start, int end){
        if(str != null && str.length() != 0){
            //第一部分  取出str第一位到start(不包括start)
            String reverseStr = str.substring(0,start);

            //第二部分
            for(int i = end-1; i>=start; i--){      //遍历需要反转的字符,从最后一位开始加入
                reverseStr += str.charAt(i);
//                reverseStr += str.substring(i,i+1);

            }
            //第三部分
            reverseStr += str.substring(end);   //将尾部不需要遍历字符串再加进来
            return  reverseStr;
        }

        return null;
    }
}

//方式三:在二的基础上进行优化
class Reverse2 {
    public String reverse(String str, int start, int end) {
        if (str != null && str.length() != 0) {
            StringBuilder builder = new StringBuilder(str.length());

            //第一部分
            builder.append(str.substring(0, start));

            for (int i = end - 1; i >= start; i--) {      //遍历需要反转的字符,从最后一位开始加入
                builder.append(str.charAt(i));
            }

            //第三部分
            builder.append(str.substring(end));   //将尾部不需要遍历字符串再加进来
            return new String(builder);
        }
        return null;
    }
}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一蓑烟雨渡平生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值