题目要求:

使用Java实现字符串反转操作,如输入:darkblue,输出eulbkrad。

 解法1:

 
  
  1. /** 
  2.  * @author darkblue 
  3.  * @version 1.0 
  4.  */ 
  5. public class ReverseString { 
  6.     /** 
  7.      * 反转字符串 
  8.      * @param orginalString 
  9.      * @return 
  10.      */ 
  11.     public static String reverse(String orginalString) { 
  12.         // null check 
  13.         if(orginalString == null) { 
  14.             return null
  15.         } 
  16.         // chars 
  17.         char[] chars = orginalString.toCharArray(); 
  18.         for(int i = 0; i < chars.length / 2; i++) {// iterate 
  19.             char currentChar = chars[i]; 
  20.             chars[i] = chars[chars.length - i - 1];// swap 
  21.             chars[chars.length - i - 1] = currentChar; 
  22.         } 
  23.         return new String(chars); 
  24.     } 
  25.      
  26.     public static void main(String[] args) { 
  27.         System.out.println(reverse("darkblue")); 
  28.     } 

原理是反序就是交换开始和结束处的字符,所以可以用字符数组进行字符交换,从而实现反序操作。

解法2:

 
  
  1. /** 
  2.  * @author darkblue 
  3.  * @version 1.0 
  4.  */ 
  5. public class ReverseString { 
  6.     /** 
  7.      * 反转字符串 
  8.      * @param orignalString 
  9.      * @return 
  10.      */ 
  11.     public static String reverse2(String orignalString) { 
  12.         // null check 
  13.         if(orignalString == null) { 
  14.             return null; 
  15.         } 
  16.         String result = ""
  17.         while(result.length() != orignalString.length()) { 
  18.             result += orignalString.charAt(orignalString.length()  
  19.                     - result.length() -1); 
  20.         } 
  21.         return result; 
  22.     } 
  23.      
  24.     public static void main(String[] args) { 
  25.         System.out.println(reverse2("darkblue")); 
  26.     } 

上述算法使用循环和字符串长度方法进行原始字符的获取,也可以实现相应的效果。

PS:就效率而已,解法2不是很理想。会在Java堆上不断产生新对象。