将字符串按照传入的参数进行逆序

介绍:

将"ABCDE"这个字符串,从第一位开始进行逆序,逆转3位。得到"CBADE"

思路:

1.因为我们知道String是不能被修改的,所以我们需要将这个字符串转为字符数组
2.对这个数组中需要逆序的地方进行遍历操作,交换位置。
3.返回这个数组,并且将其转换为String.

具体代码:

package 初级;

public class 字符串逆序 {

    public static void main(String[] args) {
        String answer = change("ABCDE",2,3);
        System.out.print("逆序后的字符串为:" + answer);
    }

    private static String change(String str, int start, int length) {
        if(start>=str.length()-1){
            System.out.println("你的start比字符串长度还长,逆序啥?");
        }else if((start+length)>str.length()){
            System.out.println("你想逆序的字符串比本来的字符串都还要长,怎么逆序!!");
        }else{
            char[] arr = str.toCharArray();//返回的是一个char数组
            int end = start+length-1;
            for(int i=0;i<length;i++){
                if(start >= end){
                    break;
                }
                char temp ;
                temp = arr[start];
                arr[start] = arr[end];
                arr[end] = temp;
                start++;
                end--;
            }
            String answer = new String(arr);
            return answer;
        }
        return null;
    }   
}

总结:

我最开始遇到的困难是没有去判断这个 start 和 end 之间的关系,所以每次循环之后本来已经逆序转换了,但是因为没有及时跳出循环,所以再次交换,导致和原来的字符串一样,并没有逆序。

题外话:

今天老师讲的动态规划里面的"0-1背包"问题,我其实还是有点迷糊。我脑子比较笨,所以不着急,一步一步来,等把算法初级这一类弄完,就开始进行中级的挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值