【Java】将字符串指定部分反转

用Java将字符串指定部分反转,例如将“abcdef”反转为“aedcbf”

思路

在这里插入图片描述

(1)定义静态方法Reverse(String str,int start,int end);
(2)将String类型转为char数组chars[ ]。因为String类存放字符串内容的属性value是一个final类型,不可以修改。
(3)定义交换缓存变量char temp = ’ ';
(4) for循环,起始索引start赋给i,结束索引end赋值给j,i++,j–,chars[i]和chars[j]互换,当i=j-1(字交换字符个数为偶数)或者i=j(字交换字符个数为奇数)时,结束交换,所以循环判断为i<=j;
(5)将数组chars转回String类型并返回。
(6)在main方法中定义字符串str,String str = “abcdef”;
(7)调用静态方法Reverse,返回反转后的字符串;

具体代码

public class Reverse {
    public static void main(String[] args) {
        String str = "abcdef";
        System.out.println("=====交换前====");
        System.out.println(str);
        str = reverse(str,1,4);
        System.out.println("=====交换后====");
        System.out.println(str);
    }
    public static String reverse(String str, int start,int end) {
        char[] chars = str.toCharArray();
        char temp = ' ';
        for (int i = start,  j = end; i < j; i++,j--) {
            temp = chars[i];
            chars[i] = chars[j];
            chars[j] = temp;
        }
        return new String(chars);
    }
}

改进

对输入参数需要进行验证,否则会抛出异常,比如输入字符串为null、反转起始索引在反转结束索引后面、反转结束索引大于字符串长度。
措施:(1)在Reverse方法中,先对输入参数进行判定,需要满足(str != null && start >= 0 && start<end && end<str.length()),如果不满足上述条件,抛出异常。在main方法采用“try - catch”捕捉异常,并输出异常信息。

改进后具体代码

public class Reverse {
    public static void main(String[] args) {
        String str = "abcdef";
        System.out.println("=====交换前====");
        System.out.println(str);
        try {
            str = reverse(str,1,4);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return;
        }
        System.out.println("=====交换后====");
        System.out.println(str);

    }
    public static String reverse(String str, int start,int end) {
        /*对输入的参数作验证*/
        if(!(str != null && start >= 0 && start<end && end<str.length()))
        {
            throw new RuntimeException("输入参数不正确");
        }
        char[] chars = str.toCharArray();
        char temp = ' ';
        for (int i = start,  j = end; i < j; i++,j--) {
            temp = chars[i];
            chars[i] = chars[j];
            chars[j] = temp;
        }
        return new String(chars);
    }
}

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值