黑马程序员技术交流社区
标题:
将字符串进行反转时的疑问
[打印本页]
作者:
王利强
时间:
2012-3-15 22:32
标题:
将字符串进行反转时的疑问
不多说,先看代码,主要是reverse方法中关于end=y-1的取值有点疑问,我验证过了,end=y-1是正确的取法,但我就是理解不了,按道理来说reversr(s,x,y)是将角标为x和角标为y的字符交换位置,如果y-1的话岂不是角标为x和角标为y-1的字符交换位置了么?
//练习二:将字符串进行翻转
public static String reverseString(String str,int x,int y)
{
char[] chr=str.toCharArray();
reverse(chr,x,y);
return new String(chr);
}
public static void reverse(char s[],int x,int y)
{
for (int start=x,end=y-1; start<end;start++,end-- )
{char temp=s[x];
s[x]=s[y];
s[y]=temp;
}
}
public static void main (String[] args)
{
String s="abcdetyaet";
String s1=reverseString(s,2,9);
System.out.println(s1);
}
}
作者:
张希强
时间:
2012-3-15 23:03
这是因为数字下标是从0开始的。还有你的程序有些问题我已经修改过了
public static void main(String[] args)
{
String s="0123456789";
System.out.println(s);
String s1=reverseString(s,0,s.length()-1);
System.out.println(s1);
}
public static String reverseString(String str,int x,int y)
{
char[] chr=str.toCharArray();
reverse(chr,x,y);
return new String(chr);
}
public static void reverse(char s[],int x,int y)
{
char temp;
for (int start=x,end=y; start<end;start++,end-- )
{
System.out.println(start+"---"+end);
temp=s[start];
s[start]=s[end];
s[end]=temp;
}
}
作者:
李爱军
时间:
2012-3-15 23:21
本帖最后由 李爱军 于 2012-3-15 23:23 编辑
数组的下角标是从零开始索引的,所以最后面的参数自然是y-1了。
作者:
贠(yun)靖
时间:
2012-3-16 18:51
你听课没仔细听 因为java的设计者们设计 翻转的时候都是 包含头 包含尾的 这也算是一种规范了
所以y-1 比如 调用 reserve(0,5)实际翻转的是0-4 这几个字符串的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2