- Given a String in java, reverse the String using standard java classes & recursive/iterative algorithm.
- e.g. reverse(“Lived”) = “deviL”
- reverse(“Star”) = “ratS”
- We will reverse string using following methods.
- Reverse string using StringBuilder class.
- Reverse String using StringBuffer class.
- Java program to reverse String using iterative algorithm.
- Java program to reverse String using recursive algorithm.
Method 1: Reverse String using StringBuilder class
public static String reverseUsingStringBuilder(String inputString) {
//inputString = "Lived"
StringBuilder builder = new StringBuilder(inputString);
//Output will be: deviL
return builder.reverse().toString();
}
Method 2: Reverse String using StringBuffer class
public static String reverseUsingStringBuffer(String inputString) {
//inputString = "Lived"
StringBuffer builder = new StringBuffer(inputString);
//Output will be: deviL
return builder.reverse().toString();
}
Method 3: Java program to reverse string – iterative algorithm
//inputString = "Lived"
public static String iterative(String inputString) {
if (null == inputString || inputString.length() == 0)
return "";
int length = inputString.length();
char[] chInputArray = inputString.toCharArray();
for (int index = 0; index < length / 2; index++) {
char firstHalf = chInputArray[index];
char secondHalf = chInputArray[length - index - 1];
//swap
chInputArray[index] = secondHalf;
chInputArray[length - index - 1] = firstHalf;
}
return new String(chInputArray);
}//Reverse string of "Lived" is "deviL"
Method 4: Java program to reverse string – recursive algorithm
//inputString = "Lived"
public static String recursive(String inputString) {
if (null == inputString || inputString.length() == 0)
return "";
return recursive(inputString.substring(1)) + inputString.charAt(0);
}//Reverse string of "Lived" is "deviL"
Logical flow to reverse string is shown Fig 1.
Complete Program to reverse a string in java:
package org.learn;
import java.util.Scanner;
public class StringReverse {
public static String reverseUsingStringBuilder(String inputString) {
StringBuilder builder = new StringBuilder(inputString);
return builder.reverse().toString();
}
public static String reverseUsingStringBuffer(String inputString) {
StringBuffer builder = new StringBuffer(inputString);
return builder.reverse().toString();
}
public static String iterative(String inputString) {
if (null == inputString || inputString.length() == 0)
return "";
int length = inputString.length();
char[] chInputArray = inputString.toCharArray();
for (int index = 0; index < length / 2; index++) {
char firstHalf = chInputArray[index];
char secondHalf = chInputArray[length - index - 1];
// swap
chInputArray[index] = secondHalf;
chInputArray[length - index - 1] = firstHalf;
}
return new String(chInputArray);
}
public static String recursive(String inputString) {
if (null == inputString || inputString.length() == 0)
return "";
return recursive(inputString.substring(1)) + inputString.charAt(0);
}
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
System.out.printf("1. Enter input string : ");
String input = scanner.next();
String reverse = reverseUsingStringBuilder(input);
System.out.printf("2. reverseUsingStringBuilder(\"%s\"): %s", input, reverse);
reverse = reverseUsingStringBuffer(input);
System.out.printf("\n3. reverseUsingStringBuffer(\"%s\"): %s", input, reverse);
reverse = iterative(input);
System.out.printf("\n4. iterative(\"%s\"): %s", input, reverse);
reverse = recursive(input);
System.out.printf("\n5. recursive(\"%s\"): %s", input, reverse);
}
}
}
Program output to reverse string in java:
1. Enter input string : Lived
2. reverseUsingStringBuilder("Lived"): deviL
3. reverseUsingStringBuffer("Lived"): deviL
4. iterative("Lived"): deviL
5. recursive("Lived"): deviL
1. Enter input string : Star
2. reverseUsingStringBuilder("Star"): ratS
3. reverseUsingStringBuffer("Star"): ratS
4. iterative("Star"): ratS
5. recursive("Star"): ratS