论述题 11.  如何不使用Java类库中的方法实现对字符串的反转?
【正确答案】如果可以使用类库中的方法,可以直接调用StringBuffer的reverse方法对字符串进行反转。由于题目明确要求不可以使用Java类库中的方法,此时就需要采取其他方法了。
   本题的解法通常有如下几种:
   方法一:数组反转法
   在C/C++语言中,字符串其实就是字符数组,可以对数组中的元素反转即可,但是在Java语言中,String是一个对象,而不是字符数组,应该如何转换昵?当然,可以先把字符串转换为字符数组,然后对数组进行反转,反转后再转换为字符串。有兴趣的读者可以自己实现代码。
   方法二:逆序遍历法
   当把字符串转换为字符数组后,可以逆向遍历数组,把遍历到的字符串拼接起来就得到了字符串的逆序序列,实现代码如下:
   public String reverse2(String str){
   StringBuilder sb=new StringBuilder();
   char[]ch=str.toCharArray();
   for(int i=ch.length-1;i>=0;i--){
   sb.append(ch[i]);
   }
   return sb.toString();
   }
   方法三:递归法
   对于这种类型的题目,面试官更希望看到求职者使用递归的方法来解决,因为递归法能够考查到面试者的知识功底,所以,有一定的难度。
   递归法的主要思路如下:递归地把字符串中第一个字符移动到字符串的最后一个位置。实现代码如下:
   punic String reverseRecursively(String str){
   if(str.length()<=1){
   return str;
   }
   return reverseRecursively(str.substring(1))+str.charAt(0);
   }
   以上这个方法虽然代码看起来简单,但是实现起来却不容易,因此,非常考验求职者的能力。当然,这个方法也有很大的缺点,由于在执行的过程中创建出大量的字符串对象,因此,效率比较低。
【答案解析】