Saturday, December 8, 2012

How to reverse String in Java with or without StringBuffer Example

Reverse String in Java
There are many ways to reverse String in Java. You can use rich Java API to quickly reverse contents of any String object. Java library provides StringBuffer and StringBuilder class with reverse() method which can be used to reverse String in Java. Since converting between String and StringBuffer or StringBuilder is very easy it's the most easy way available to reverse String in Java. At the same time Writing Java program to reverse String in Java without StringBuffer is one of the popular Java String interview question, which requires you to reverse String by applying logic and by not using API methods. Since reverse is a recursive job, you can use recursion as well as loop to reverse String in Java. In this Java tutorial I have shown How to reverse String using StringBuffer, StringBuilder and using pure loop with logic. You can also check How to reverse String with recursion in Java, if you want to see recursive code. let's see complete Java program for this beautiful Java programming exercise.

Java program to reverse String in Java

Java program to reverse String in Java without StringBuffer or StringBuilderHere is my complete code program to reverse any String in Java. In main method we have first used StringBuffer and StringBuilder to reverse contents of String and then we wrote our own logic to reverse String. This uses toCharArray() method of String class which return character array of String. By looping through character array and appending it into empty String we can get reversed String in Java, as shown in following example.

/**
 *
 * Java program to reverse String in Java. There are multiple ways to reverse
 * String in Java, you can either take help of standard Java API StringBuffer
 * to reverse String in Java. StringBuffer has a reverse() method which return StringBuffer
 * with reversed contents. On the other hand you can also reverse it by applying your
 * own logic, if asked to reverse String without using StringBuffer in Java. By the way
 * you can also use StringBuilder to reverse String in Java. StringBuilder is non thread-safe
 * version of StringBuffer and provides similar API. You can use StringBuilder's reverse()
 * method to reverse content and then convert it back to String
 *
 * @author http://java67.blogspot.com
 */

public class StringReverseExample {
 
 
    public static void main(String args[]) {
     
        //quick wasy to reverse String in Java - Use StringBuffer
        String word = "HelloWorld";
        String reverse = new StringBuffer(word).reverse().toString();
        System.out.printf(" original String : %s , reversed String %s  %n", word, reverse);
     
        //another quick to reverse String in Java - use StringBuilder
        word = "WakeUp";
        reverse = new StringBuilder(word).reverse().toString();
        System.out.printf(" original String : %s , reversed String %s %n", word, reverse);
     
        //one way to reverse String without using StringBuffer or StringBuilder is writing
        //own utility method
        word = "Band";
        reverse = reverse(word);
        System.out.printf(" original String : %s , reversed String %s %n", word, reverse);
    }  
 
 
    public static String reverse(String source){
        if(source == null || source.isEmpty()){
            return source;
        }      
        String reverse = "";
        for(int i = source.length() -1; i>=0; i--){
            reverse = reverse + source.charAt(i);
        }
     
        return reverse;
    }
   
}

Output:
original String : HelloWorld , reversed String dlroWolleH
original String : WakeUp , reversed String pUekaW
original String : Band , reversed String dnaB


That's all on How to reverse String in Java with and without StringBuffer and StringBuilder. Though being a Java programmer I prefer to use library and suggest any one to use StringBuffer or StringBuilder to reverse String for any production use. Though its also a good programming exercise and you should practice it before going for any Java programming interview.

Other Java tutorials you may like

9 comments:

  1. Indeed it's commonly asked to write a Java program to reverse String in Java without using reverse function and it's not EASY. first of all reverse can have different meaning e.g. reverse word by word or reverse each character, preserving whitespace etc. They may ask you to use recursion to write reverse String function instead of using for loop. Best way is to prepare well with all kinds of String related question.

    ReplyDelete
    Replies
    1. public class ReverseString {

      private static String hello = "Hello World";

      public static void main(String[] args)
      {
      System.out.println(reverseString(hello));
      }

      public static String reverseString(String s) {
      char c[] = s.toCharArray();
      int i = 0, j = c.length - 1;
      while (i < j) {
      char tmp = c[i];
      c[i] = c[j];
      c[j] = tmp;
      i++;
      j--;
      }
      return new String(c);
      }

      Delete
  2. Another solution:

    public static String reverse(String s) {

    if(s.length() == 1){
    return s;
    }
    else{
    return s.charAt(s.length()-1)+reverse(s.substring(1, s.length()-1))+s.charAt(0);
    }
    }

    ReplyDelete
  3. you can find different ways @ http://javacracker.com/different-ways-to-reverse-a-string/

    ReplyDelete
  4. But,the method isEmpty() is undefined for the type String

    ReplyDelete
  5. input= HELLO WORLD
    output= OLLEH DLROW

    how will get this output without using any inbuild function??
    plz provide me solusn

    ReplyDelete
    Replies
    1. you can split the string in two strings via locating the space, then reverse them and output

      Delete
  6. why you making people fools you, haven't uses the reverse method at all.......,because if you comment the whole reverse method defined below still you are going to get the
    answer

    ReplyDelete
  7. int length=as.length();
    String reverse="";
    for ( int i = length - 1 ; i >= 0 ; i-- )
    reverse = reverse + as.charAt(i);
    result.setText(reverse);

    ReplyDelete

Java67 Headline Animator