Programming & Development / April 8, 2025

How to Reverse a String in Java (In-Place)

String reversal in-place string manipulation Java string methods two-pointer algorithm mutable char array reverse string in Java

Description:

Reversing a string is a common problem in programming, and in Java, you can perform this task efficiently using the in-place approach. In this article, we will discuss how to reverse a string in Java without using any extra space for a new string, which is what we call in-place string reversal. This method modifies the string directly, thus ensuring that the space complexity remains constant, making it an efficient solution.

Introduction

Reversing a string is often required in various software development tasks, including algorithms and text processing applications. While Java provides a convenient StringBuilder class to easily reverse a string, it's important to know how to do this without relying on additional libraries. In this guide, we’ll implement a solution that reverses the string in-place using the two-pointer algorithm, making it both space and time efficient.

Problem Statement

Given a string, you need to reverse the string in-place. That means you should not use any extra space to store the reversed string, except for a small number of auxiliary variables like pointers. The challenge is to swap the characters at the start and end of the string and move towards the center, until the entire string is reversed.

The In-Place Reversal Algorithm

We can reverse a string in-place using the following approach:

  1. Convert the string to a mutable array: Strings in Java are immutable, so we first need to convert the string into a char[] array so we can modify it.
  2. Initialize two pointers: We will use two pointers: one at the beginning (left pointer) and one at the end (right pointer) of the array.
  3. Swap characters: While the left pointer is less than the right pointer, we swap the characters at the left and right positions.
  4. Move the pointers: After each swap, we increment the left pointer and decrement the right pointer, moving towards the center of the array.
  5. Return the reversed string: Once the pointers meet or cross, the string is fully reversed, and we can convert the character array back into a string.

Java Code Implementation

Here’s the Java code that implements the in-place string reversal:

java

public class StringReversal {

    // Function to reverse a string in-place
    public static String reverseString(String str) {
        // Convert the string to a char array
        char[] charArray = str.toCharArray();
        
        // Initialize two pointers: one at the beginning and one at the end of the array
        int left = 0;
        int right = charArray.length - 1;
        
        // Swap characters until the pointers meet in the middle
        while (left < right) {
            // Swap the characters at the left and right pointers
            char temp = charArray[left];
            charArray[left] = charArray[right];
            charArray[right] = temp;
            
            // Move the pointers towards the center
            left++;
            right--;
        }
        
        // Return the reversed string
        return new String(charArray);
    }

    public static void main(String[] args) {
        // Sample input string
        String input = "Hello, World!";
        
        // Reverse the string in-place
        String reversed = reverseString(input);
        
        // Output the reversed string
        System.out.println("Original String: " + input);
        System.out.println("Reversed String: " + reversed);
    }
}

Explanation of the Code

  1. String to char array: We start by converting the string str into a char[] array. This is because strings in Java are immutable, and in-place changes are not possible unless we work with a mutable type like a character array.
  2. Two-pointer technique: We initialize two pointers — one at the start (left = 0) and one at the end (right = str.length() - 1) of the array. These pointers will help us swap the characters as we move towards the center.
  3. Swapping logic: Inside the while loop, we swap the characters at the left and right positions and then move the pointers towards the center by incrementing left and decrementing right.
  4. Output: After all the swaps are done, the array contains the reversed string, which we then convert back into a string and return.

Time and Space Complexity

  • Time Complexity: The algorithm runs in O(n) time, where n is the length of the string. This is because we go through the string once, swapping elements at both ends and moving towards the middle.
  • Space Complexity: The space complexity is O(1) because we are only using a constant amount of extra space for the two pointers and a temporary variable for the swap. No additional space is used to store the reversed string.

Conclusion

Reversing a string in-place in Java is an important technique to understand when working with algorithms and optimizing for space. By using the two-pointer approach, we can efficiently reverse a string without requiring additional space. This method can be applied to any type of string, and it's an essential concept to grasp for various coding challenges and software development tasks.


Comments

No comments yet

Add a new Comment

NUHMAN.COM

Information Technology website for Programming & Development, Web Design & UX/UI, Startups & Innovation, Gadgets & Consumer Tech, Cloud Computing & Enterprise Tech, Cybersecurity, Artificial Intelligence (AI) & Machine Learning (ML), Gaming Technology, Mobile Development, Tech News & Trends, Open Source & Linux, Data Science & Analytics

Categories

Tags

©{" "} Nuhmans.com . All Rights Reserved. Designed by{" "} HTML Codex