介绍:
将"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背包"问题,我其实还是有点迷糊。我脑子比较笨,所以不着急,一步一步来,等把算法初级这一类弄完,就开始进行中级的挑战。