將字符串按照傳入的參數進行逆序

介紹:

將"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揹包"問題,我其實還是有點迷糊。我腦子比較笨,所以不着急,一步一步來,等把算法初級這一類弄完,就開始進行中級的挑戰。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章