黑马程序员技术交流社区

标题: 将字符串进行反转时的疑问 [打印本页]

作者: 王利强    时间: 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