Java program to reverse a string

This article discusses 5 different ways of reversing strings in Java through examples.

Following are some interesting facts about String and StringBuilder classes : 

  1. String objects are immutable.
  2. The String class in Java does not have a reverse() method, while the StringBuilder class has a built-in reverse() method.
  3. The StringBuilder class does not have a toCharArray() method, while the String class has a toCharArray() method.
  • Converting String into Bytes: 
     

Method: 

1. Create a temporary byte[]  of length equal 
   to the length of the input string.
2. Store the bytes (which we get by using 
   getBytes() method) in reverse order into 
   the temporary byte[] .
3. Create a new String abject using byte[] to
   store result.

JAVA

// Java program to ReverseString using ByteArray.
import java.lang.*;
import java.io.*;
import java.util.*;

// Class of ReverseString
class ReverseString {
	public static void main(String[] args)
	{
		String input = "GeeksforGeeks";

		// getBytes() method to convert string
		// into bytes[].
		byte[] strAsByteArray = input.getBytes();

		byte[] result = new byte[strAsByteArray.length];

		// Store result in reverse order into the
		// result byte[]
		for (int i = 0; i < strAsByteArray.length; i++)
			result[i] = strAsByteArray[strAsByteArray.length - i - 1];

		System.out.println(new String(result));
	}
}

Output: 

skeeGrofskeeG
  • Using the built-in reverse() method of the StringBuilder class: 
     

JAVA

// Java program to ReverseString using StringBuilder
import java.lang.*;
import java.io.*;
import java.util.*;

// Class of ReverseString
class ReverseString {
	public static void main(String[] args)
	{
		String input = "Geeks for Geeks";

		StringBuilder input1 = new StringBuilder();

		// append a string into StringBuilder input1
		input1.append(input);

		// reverse StringBuilder input1
		input1.reverse();

		// print reversed String
		System.out.println(input1);
	}
}

Output: 

skeeG rof skeeG
  • Converting String to character array:
     
1. First, convert String to character array
   by using the built in Java String class 
   method toCharArray().
2. Then, scan the string from end  to start, 
   and print the character one by one.

JAVA

// Java program to Reverse a String by
// converting string to characters one
// by one
import java.lang.*;
import java.io.*;
import java.util.*;

// Class of ReverseString
class ReverseString {
	public static void main(String[] args)
	{
		String input = "GeeksForGeeks";

		// convert String to character array
		// by using toCharArray
		char[] try1 = input.toCharArray();

		for (int i = try1.length - 1; i >= 0; i--)
			System.out.print(try1[i]);
	}
}

Output: 

skeeGrofskeeG
  • Convert the input string into a character array by using the toCharArray():
     
1. Set the left index equal to 0 and right 
   index equal to the length of the string -1.
2. Swap the characters of the start index 
   scanning with the last index scanning 
   one by one. After that, increase the left 
   index by 1 (left++) and decrease the right 
   by 1 i.e., (right--) to move on to the next 
   characters in the character array .
3. Continue till left is less than or equal to
   the right.

JAVA

// Java program to Reverse a String using swapping
// of variables
import java.lang.*;
import java.io.*;
import java.util.*;

// Class of ReverseString
class ReverseString {
	public static void main(String[] args)
	{
		String input = "Geeks For Geeks";
		char[] temparray = input.toCharArray();
		int left, right = 0;
		right = temparray.length - 1;

		for (left = 0; left < right; left++, right--) {
			// Swap values of left and right
			char temp = temparray[left];
			temparray[left] = temparray[right];
			temparray[right] = temp;
		}

		for (char c : temparray)
			System.out.print(c);
		System.out.println();
	}
}

Output: 

skeeG roF skeeG
  • Using ArrayList object: 
     

 

1. We copy String contents to an object 
   of ArrayList.
1. We create a ListIterator object by using 
   the listIterator() method on the ArrayList 
   object.
2. ListIterator object is used to iterate over 
   the list.
3. ListIterator object helps us to iterate 
   over the reversed list and print it one 
   by one to the output screen.

JAVA

// Java program to Reverse a String using ListIterator
import java.lang.*;
import java.io.*;
import java.util.*;

// Class of ReverseString
class ReverseString {
	public static void main(String[] args)
	{
		String input = "Geeks For Geeks";
		char[] hello = input.toCharArray();
		List trial1 = new ArrayList<>();

		for (char c : hello)
			trial1.add(c);

		Collections.reverse(trial1);
		ListIterator li = trial1.listIterator();
		while (li.hasNext())
			System.out.print(li.next());
	}
}

Output: 

skeeG roF skeeG
  • Using StringBuffer: 
     

JAVA

// Java program to demonstrate conversion from
// String to StringBuffer and reverse of string
import java.lang.*;
import java.io.*;
import java.util.*;

public class Test {
	public static void main(String[] args)
	{
		String str = "Geeks";

		// conversion from String object to StringBuffer
		StringBuffer sbr = new StringBuffer(str);
		// To reverse the string
		sbr.reverse();
		System.out.println(sbr);
	}
}

Output: 

skeeG

 

Submit Your Programming Assignment Details