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 StringBufferThread-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 Recursionpublic 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 Streamspublic 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 Stackimport 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
Method Time Complexity Space Recommended StringBuilder reverse() O(n) Low ⭐⭐⭐⭐⭐ Char swap array O(n) Low ⭐⭐⭐⭐⭐ StringBuffer reverse() O(n) Low ⭐⭐⭐⭐ Streams O(n) Medium ⭐⭐ Collections.reverse() O(n) High ⭐⭐ Recursion O(n²) High ⭐ String concat loop O(n²) High ❌ Avoid
Comments
Post a Comment