This recipe shows how to check if a given string is a palindrome. We will demonstrate three different approaches to implementing the solution.
Given an input string, check if it is a palindrome.
As described on Wikipedia, a palindrome is a word, number, phrase, or other sequence of characters which reads the same backward as forward.
For example, the following are palindromes:
radar
kayak
12321
To check if an input is a palindrome, the easiest approach would be to first reverse the input and them compare the reversed input with the original input. The input is a palindrome if they are the same.
The first solution uses the StringBuilder class to make things a bit easier.
public class Palindrome1 {
private static String reverse(String input) {
final StringBuilder builder = new StringBuilder(input);
return builder.reverse().toString();
}
private static boolean isPalindrome(String input) {
return (input.equals(reverse(input)));
}
public static void main(String[] args) {
final String input = args[0];
System.out.println(isPalindrome(input));
}
}
Link To: Java Source Code
The next solution demonstrates an implementation using iteration.
public class Palindrome2 {
private static String reverse(String input) {
String reverse = "";
for (int i = input.length() - 1; i >= 0; i--) {
reverse += input.charAt(i);
}
return reverse;
}
private static boolean isPalindrome(String input) {
return (input.equals(reverse(input)));
}
public static void main(String[] args) {
final String input = args[0];
System.out.println(isPalindrome(input));
}
}
Link To: Java Source Code
The final solution demonstrates an implementation using recursion.
public class Palindrome3 {
private static String reverse(String input) {
if ((input == null) || input.isEmpty()) {
return input;
}
return reverse(input.substring(1)) + input.charAt(0);
}
private static boolean isPalindrome(String input) {
return (input.equals(reverse(input)));
}
public static void main(String[] args) {
final String input = args[0];
System.out.println(isPalindrome(input));
}
}
Link To: Java Source Code