介紹:
將"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揹包"問題,我其實還是有點迷糊。我腦子比較笨,所以不着急,一步一步來,等把算法初級這一類弄完,就開始進行中級的挑戰。