字符串反转 --- Java 递归和非递归实现

1)递归实现

    思想:如:hello  --- > elloh  ---> lloeh ---> loleh -- > olleh

 1 // 递归实现字符串反转
 2     public static String reverse(String orStr) {
 3         
 4         if (orStr == null || orStr.length() == 1) {// "" "s"
 5             return orStr;
 6         }
 7 
 8         return reverse(orStr.substring(1)) + orStr.charAt(0);// "sdfghjkl"
 9 
10     }

 

2 )非递归实现

    思想:将一个字符串打散成字符数组,然后用strBuffer 对象追加

   

 1 // 非递归实现字符串反转
 2     public static String reverseNoRecurse(String orgStr) {
 3         if (orgStr == null || orgStr.length() == 1) {
 4             return orgStr;
 5         }
 6         char[] charArr = orgStr.toCharArray();
 7         StringBuffer sb = new StringBuffer();
 8         for (int i = charArr.length-1; i >=0; i--) {
 9             sb.append(charArr[i]);
10         }
11         return sb.toString();
12 
13     }

 

测试:

// 测试入口
    public static void main(String[] args) {
        String str = new String("abc");
        // System.out.println(reverse(str));    //递归
        System.out.println(reverseNoRecurse(str));   //非递归
    }

 

posted on 2019-03-24 21:50  小金人儿  阅读(236)  评论(0)    收藏  举报