10 Best Way to Reverse a String in Java.

1) Using StringBuilder

public class StringReverseUsingStringBuilder {
public static void main(String args[]){
String reversed = new StringBuilder(str).reverse().toString();
System.out.println("Reversed String :"+reversed);
}
}


2) Using StringBuffer

Thread-safe alternative to StringBuilder.

public class StringReverseUsingStringBuffer {
public static void main(String args[]){
String str = "Hello World";
String reversed = new StringBuffer(str).reverse().toString();
System.out.println("Reversed string:"+reversed);
}
}

3) Using Char Array Swapping (Optimized Manual Logic)
public class ReserseUsingCharArraySwapping {
public static void main(String args[]){
String str = "Hello World";
char[] arr = str.toCharArray();
int left=0;
int right=arr.length-1;
while(left<right){
char temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
left++;
right--;
}
System.out.println("Reverse of String : "+new String(arr));
}
}



4) Using For Loop + StringBuilder append().
public class ReverseStringUsingStringBuilderForLoop {
public static void main(String args[]){
String str = "Hello World";
StringBuilder sb = new StringBuilder();
for(int i=str.length()-1; i>=0; i--){
sb.append(str.charAt(i));
}
System.out.println("Reversed String :"+sb.toString());
}
}



5) Using For Loop + String Concatenation (Not Recommended, O(n²))
public class ReverseStringConcatenation {
public static void main(String args[]){
String str = "Hello World";
String reversed = "";

for (int i = str.length() - 1; i >= 0; i--) {
reversed += str.charAt(i);
}
System.out.println("Reversed String:"+reversed);
}
}


6) Using Recursion

public class StringReverseUsingRecursion {
public static String reverse(String str) {
if (str.isEmpty()) return str;
return reverse(str.substring(1)) + str.charAt(0);
}

public static void main(String[] args) {
System.out.println(reverse("Hello World"));
}
}


7) Using Java 8 Streams

public class ReverseStringUsingJava8Streams {
public static void main(String[] args) {
String str = "Hello World";

String reversed = str.chars()
.mapToObj(c -> (char) c)
.reduce("", (s, c) -> c + s, (s1, s2) -> s2 + s1);

System.out.println("Reversed String :"+reversed);
}
}



8) Using Collections.reverse()


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class UsingCollecionReverse {
public static void main(String[] args) {
String str = "Hello World";
List<Character> list = new ArrayList<>();
for (char c : str.toCharArray()) {
list.add(c);
}
Collections.reverse(list);
StringBuilder sb = new StringBuilder();
for (char c : list) {
sb.append(c);
}
System.out.println(sb.toString());
}
}


9) Using Stack
import java.util.Stack;

public class UsingStack {
public static void main(String[] args) {
String str = "Hello World";
Stack<Character> stack = new Stack<>();
for (char c : str.toCharArray()) {
stack.push(c);
}
StringBuilder sb = new StringBuilder();
while (!stack.isEmpty()) {
sb.append(stack.pop());
}
System.out.println(sb.toString());
}
}


10) Using XOR Swap (Interview Trick — Rare Use)

public class UsingXOrSwap {
public static void main(String[] args) {
String str = "Hello World";
char[] arr = str.toCharArray();

int left = 0, right = arr.length - 1;
while (left < right) {
arr[left] ^= arr[right];
arr[right] ^= arr[left];
arr[left] ^= arr[right];
left++;
right--;
}

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



🎯 PERFORMANCE SUMMARY



MethodTime ComplexitySpaceRecommended
StringBuilder reverse()O(n)Low⭐⭐⭐⭐⭐
Char swap arrayO(n)Low⭐⭐⭐⭐⭐
StringBuffer reverse()O(n)Low⭐⭐⭐⭐
StreamsO(n)Medium⭐⭐
Collections.reverse()O(n)High⭐⭐
RecursionO(n²)High
String concat loopO(n²)High❌ Avoid















Comments

Popular posts from this blog

GenAI in QA Automation: Game Changer or Just Hype?

How to choose the right QA Automation tool for your web application?

How to validate broken link on the webpage using playwright?