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

介绍:

将"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揹包"问题,我其实还是有点迷糊。我脑子比较笨,所以不着急,一步一步来,等把算法初级这一类弄完,就开始进行中级的挑战。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章