AAndApp2.java package algorithms;public class AAndApp { public static void main(String[] args) { self1(); System.out.println(reverseString(null)); } private static void self1() { //去掉空格 String a = " a bb d dd "; char[] b = a.toCharA
          package algorithms;
public class AAndApp {
    public static void main(String[] args) {
        self1();
        System.out.println(reverseString(null));
    }
    private static void self1() {
        //去掉空格
      String a = "  a  bb d dd   ";
      char[] b = a.toCharArray();
      StringBuffer sb = new StringBuffer("");
      for (int i = 0; i < b.length; i++){
          if ( 32 != b[i]){
              sb.append(b[i]);
          }
      }
        System.out.println(sb.toString());
        System.out.println(sb.reverse());
    }
        //反转字符串:最好的方法是StringBuffer中的inverse方法
    public static String reverseString(String s) {
        if (null == s || s.isEmpty()){
            return s;
        }else {
            return reverseString(s.substring(1)) + s.charAt(0);
        }
    }
} 
 好玩的递归
 
String反转的本质是什么AAndApp1.java
package algorithms;
import javax.sound.midi.SoundbankResource;
import java.util.Arrays;
public class AAndApp1 {
        public static void main(String[] args) {
        System.out.println(reverse("abcdefgh"));
    }
    private static String reverse(String n){
        if (null == n || n.isEmpty()){
            return n;
        }
        return reverse(n.substring(1)) + n.charAt(0) + (n.substring(1)) + '\\';
        //结果是:h\gh\fgh\efgh\defgh\cdefgh\bcdefgh\abcdefgh\,其中的奥秘就在reverse(n.substring(1))
        //和n.charAt(0)位置的次序。
    }
}
        
        