Best Way to Reverse a String in Java

📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.

🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.

▶️ Subscribe to My YouTube Channel (176K+ subscribers): Java Guides on YouTube

▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube

Introduction

Reversing a string is a common task in Java programming. There are several methods to reverse a string, each with its own advantages and use cases. This blog post will explore the best ways to reverse a string in Java, including using built-in methods, looping constructs, and external libraries.

Table of Contents

  1. Using StringBuilder or StringBuffer
  2. Using a Loop
  3. Using Recursion
  4. Using Apache Commons Lang StringUtils
  5. Performance Considerations
  6. Complete Example Program
  7. Conclusion

1. Using StringBuilder or StringBuffer

The StringBuilder and StringBuffer classes in Java provide a built-in method to reverse a string. This is one of the most efficient ways to reverse a string.

Example:

public class ReverseStringUsingStringBuilder { public static void main(String[] args) { String str = "Hello World"; // Reverse string using StringBuilder StringBuilder sb = new StringBuilder(str); String reversedStr = sb.reverse().toString(); System.out.println("Original String: " + str); System.out.println("Reversed String: " + reversedStr); } } 

Output:

Original String: Hello World Reversed String: dlroW olleH 

Explanation:

  • StringBuilder or StringBuffer is used to reverse the string using the reverse() method.

2. Using a Loop

You can reverse a string manually using a loop. This method is straightforward and does not require any additional libraries or classes.

Example:

public class ReverseStringUsingLoop { public static void main(String[] args) { String str = "Hello World"; char[] strArray = str.toCharArray(); String reversedStr = ""; // Reverse string using a loop for (int i = strArray.length - 1; i >= 0; i--) { reversedStr += strArray[i]; } System.out.println("Original String: " + str); System.out.println("Reversed String: " + reversedStr); } } 

Output:

Original String: Hello World Reversed String: dlroW olleH 

Explanation:

  • A loop is used to iterate over the string characters in reverse order and build the reversed string.

3. Using Recursion

Recursion can also be used to reverse a string, though it is generally less efficient due to the overhead of recursive calls.

Example:

public class ReverseStringUsingRecursion { public static void main(String[] args) { String str = "Hello World"; // Reverse string using recursion String reversedStr = reverseString(str); System.out.println("Original String: " + str); System.out.println("Reversed String: " + reversedStr); } public static String reverseString(String str) { if (str.isEmpty()) { return str; } return reverseString(str.substring(1)) + str.charAt(0); } } 

Output:

Original String: Hello World Reversed String: dlroW olleH 

Explanation:

  • The reverseString() method calls itself recursively, building the reversed string.

4. Using Apache Commons Lang StringUtils

The Apache Commons Lang library provides a utility class StringUtils with a method to reverse a string. This method is simple and requires adding the library to your project.

Maven Dependency:

<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency> 

Example:

import org.apache.commons.lang3.StringUtils; public class ReverseStringUsingStringUtils { public static void main(String[] args) { String str = "Hello World"; // Reverse string using StringUtils String reversedStr = StringUtils.reverse(str); System.out.println("Original String: " + str); System.out.println("Reversed String: " + reversedStr); } } 

Output:

Original String: Hello World Reversed String: dlroW olleH 

Explanation:

  • StringUtils.reverse(str) from the Apache Commons Lang library is used to reverse the string.

5. Performance Considerations

When considering performance, StringBuilder or StringBuffer are generally the most efficient methods for reversing a string. Using a loop is also efficient but can be slightly slower due to concatenation operations. Recursion, while elegant, is the least efficient due to the overhead of recursive method calls and potential stack overflow for large strings.

6. Complete Example Program

Here is a complete program that demonstrates all the methods discussed above to reverse a string in Java.

Example Code:

import org.apache.commons.lang3.StringUtils; public class ReverseStringExample { public static void main(String[] args) { String str = "Hello World"; // Using StringBuilder StringBuilder sb = new StringBuilder(str); String reversedStr1 = sb.reverse().toString(); System.out.println("Using StringBuilder: " + reversedStr1); // Using Loop char[] strArray = str.toCharArray(); String reversedStr2 = ""; for (int i = strArray.length - 1; i >= 0; i--) { reversedStr2 += strArray[i]; } System.out.println("Using Loop: " + reversedStr2); // Using Recursion String reversedStr3 = reverseString(str); System.out.println("Using Recursion: " + reversedStr3); // Using StringUtils String reversedStr4 = StringUtils.reverse(str); System.out.println("Using StringUtils: " + reversedStr4); } public static String reverseString(String str) { if (str.isEmpty()) { return str; } return reverseString(str.substring(1)) + str.charAt(0); } } 

Output:

Using StringBuilder: dlroW olleH Using Loop: dlroW olleH Using Recursion: dlroW olleH Using StringUtils: dlroW olleH 

7. Conclusion

Reversing a string in Java can be accomplished in several ways. The StringBuilder or StringBuffer methods are generally the most efficient and easiest to use. Using a loop provides a straightforward approach, while recursion offers an elegant but less efficient solution. The Apache Commons Lang StringUtils class offers a convenient utility method. By understanding these different methods, you can choose the one that best fits your needs and coding style.

Happy coding!

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare