黑马程序员技术交流社区
标题:
字符串翻转的代码,只能全部翻转,不能局部翻转?求指教
[打印本页]
作者:
山鹰
时间:
2013-6-3 18:02
标题:
字符串翻转的代码,只能全部翻转,不能局部翻转?求指教
可以全部返回转,怎么不可以局部翻转?哪里的问题?
public class StringDemo {
/*
* 字符串翻转
* 1.将字符串变成数组
* 2.对数组翻转
* 3.将数组变成字符串
*/
public static void main(String[] args) {
String str = "abcd efgh";
System.out.println(reverseString(str,0,1));//怎么不可以局部翻转
}
public static String reverseString(String s,int start,int end){
char[] chars = s.toCharArray();
reverse(chars,start,end);
return (new String(chars));
}
public static String reverseString(String s){
return reverseString (s,0,s.length());
}
private static void reverse(char[] arr, int x, int y) {
for(int start=x,end=y-1;start<end;start++,end--){
swap(arr,start,end);
}
}
private static void swap(char[] arr, int x, int y) {
char temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
作者:
飞鸟青崖
时间:
2013-6-3 18:13
你的reverse方法中,start = x,end = y-1;所以当你调用reverseString(str,0,1));时,传入到reverse方法中时,start和end都是0.指向的是同一个位置,翻转之后没有任何变化。如果你调用reverseString(str,0,2));你就会发现翻转了。
作者:
lxf_cat5277
时间:
2013-6-3 18:17
reverseString(str,0,1)和
private static void reverse(char[] arr, int x, int y) {
for(int start=x,end=y-1;start<end;start++,end--){
swap(arr,start,end);
}
}
中的end=y-1这里出现了问题,for(int start = 0, end =0;start<end;start++,end--)
你的start从0开始end为1时再减1是没有意义的。
作者:
王瀛
时间:
2013-6-3 18:24
在对操作域进行设定的时候是“包含头,不包含尾”
所以0,1相当于是指向的一个字符,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2