Tuesday, January 06, 2009

Reversing a String in Java

The following code shows different methods of reversing a String in Java. The simplest being using the reverse() method of StringBuffer, while the other methods use char array and recursion:

  1. public class StringReverse {  
  2.     public static void main(String[] args) {  
  3.         String s = "zyxwvutsrqponmlkjihgfedcba";  
  4.         System.out.println(charReverse(s));  
  5.         System.out.println(recursiveReverse(s , new StringBuffer()));  
  6.         System.out.println(recursiveReverse2(s, new StringBuffer()));  
  7.         System.out.println(bufferReverse(s));  
  8.     }  
  9.       
  10.     public static String charReverse(String s) {  
  11.         char[] cArr = s.toCharArray();  
  12.         StringBuffer reversed = new StringBuffer();  
  13.         for(int i=cArr.length-1; i>=0; i--) reversed.append(cArr[i]);  
  14.         return reversed.toString();  
  15.     }  
  16.       
  17.     public static String recursiveReverse(String s, StringBuffer t) {  
  18.         if(s.length() > 0) {  
  19.             t.append(s.substring(s.length()-1));  
  20.             recursiveReverse(s.substring(0, s.length()-1), t);  
  21.         }  
  22.         return t.toString();  
  23.     }  
  24.       
  25.     public static String recursiveReverse2(String s, StringBuffer sb) {  
  26.         if (s.length() == 1){  
  27.             sb.append(s);  
  28.         }  
  29.         else{  
  30.             recursiveReverse2(s.substring(1, s.length()), sb);    
  31.             sb.append(s.substring(0,1));  
  32.         }  
  33.         return sb.toString();  
  34.     }  
  35.       
  36.     public static String bufferReverse(String s) {  
  37.         StringBuffer sb = new StringBuffer(s);  
  38.         return sb.reverse().toString();  
  39.     }  
  40. }  

No comments: