黑马程序员技术交流社区

标题: 自己实现字符串翻转 [打印本页]

作者: huhanghao    时间: 2015-3-18 23:59
标题: 自己实现字符串翻转
class Demo1234
{
        public static void main(String[] args)
        {
                String s1 = "  abc abc  ";
                String s2 = "abcdefgh";
                String s = "";
                String ss = "";

                s = Converse(s2);
                ss = Converse(s2,1,5);
                sop(s);
        }

        public static void sop(Object obj)
        {
                System.out.println(obj);
        }

        public static String Converse(String str)
        {
                char[] chs = str.toCharArray();
                char[] chs1 = new char[chs.length];

                for (int i = 0,j = chs.length - 1; i < chs.length ;i++,j-- )
                {
                        chs1[i] = chs[j];
                }

                String s = new String(chs1);
                return s;
        }

        public static String Converse(String str, int start ,int end)
        {
                char[] chs = str.toCharArray();
                char[] chs1 = new char[chs.length];
               
                int len = 0;
                for (int i = start,j = end; i < end ;i++,j-- )
                {
                        chs1[len] = chs[j];
                        len++;
                }

                String s1 = new String(chs1);
                String s2 = substring(0,start);
                String s3 = substring(end-1,chs.length);
                String s = s1+s2+s3;
                return s;
        }

}

编译错误,找不到原因
作者: 殷俊    时间: 2015-3-19 00:53
虽然还没有弄明白你第二个Converse方法是什么怎么执行的?但是编译没通过就是你那里面的substring用法有误,应该是str.substring();,这样才对,你必须明确返回的是哪个字符串的子串;第一个Converse没错
作者: 殷俊    时间: 2015-3-19 16:02
那第二个converse的方法,有两种实现方式:1、先将整个字符串反转,然后再获取需要的部分字符串;2、先获取指定的部分字符串,然后再反转;你的第二个converse应该是先转换成字符串数组,在反转部分字符数组元素,个人感觉有点麻烦,还不如整个转成数组后,整个反转字符串数组,然后再根据传入值获取指定的反转字符串,而且这样的话,你就可以直接调用第一个converse,再写上获取部分的代码就可以了,个人感觉这样更好点




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2