Java Palindrome Check
Check if strings and numbers read the same forwards and backwards
🔄 What is a Palindrome?
A palindrome reads the same forwards and backwards. Examples include "radar", "level", "madam" for strings and 121, 1331 for numbers. Java makes checking palindromes simple and fun!
// Simple palindrome check
public class PalindromeCheck {
public static void main(String[] args) {
String word = "radar";
if (isPalindrome(word)) {
System.out.println(word + " is a palindrome!");
} else {
System.out.println(word + " is not a palindrome.");
}
}
static boolean isPalindrome(String str) {
String reversed = new StringBuilder(str).reverse().toString();
return str.equals(reversed);
}
}
Output:
radar is a palindrome!
Different Checking Methods
StringBuilder
Use built-in reverse method
static boolean isPalindrome(String s) {
String reversed = new StringBuilder(s)
.reverse().toString();
return s.equals(reversed);
}
Two Pointers
Compare characters from both ends
static boolean isPalindrome(String s) {
int left = 0, right = s.length() - 1;
while (left < right) {
if (s.charAt(left) != s.charAt(right))
return false;
left++; right--;
}
return true;
}
Number Palindrome
Check if numbers are palindromes
static boolean isPalindrome(int num) {
int original = num, reversed = 0;
while (num > 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}
return original == reversed;
}
Ignore Case/Space
Handle real-world text
static boolean isPalindrome(String s) {
s = s.toLowerCase().replaceAll("[^a-z0-9]", "");
int left = 0, right = s.length() - 1;
while (left < right) {
if (s.charAt(left++) != s.charAt(right--))
return false;
}
return true;
}
🔹 Complete Palindrome Program
Here's a comprehensive program that checks different types of palindromes:
public class PalindromeComplete {
public static void main(String[] args) {
// Test strings
String[] words = {"radar", "hello", "level", "A man a plan a canal Panama"};
System.out.println("String Palindrome Tests:");
for (String word : words) {
System.out.println(word + " -> " + isStringPalindrome(word));
}
// Test numbers
int[] numbers = {121, 123, 1331, 12321};
System.out.println("\nNumber Palindrome Tests:");
for (int num : numbers) {
System.out.println(num + " -> " + isNumberPalindrome(num));
}
// Test with case and spaces ignored
System.out.println("\nIgnoring case and spaces:");
System.out.println("'A man a plan a canal Panama' -> " +
isPalindromeIgnoreCase("A man a plan a canal Panama"));
}
// Simple string palindrome
static boolean isStringPalindrome(String str) {
String reversed = new StringBuilder(str).reverse().toString();
return str.equals(reversed);
}
// Number palindrome
static boolean isNumberPalindrome(int num) {
int original = num, reversed = 0;
while (num > 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}
return original == reversed;
}
// Palindrome ignoring case and spaces
static boolean isPalindromeIgnoreCase(String str) {
str = str.toLowerCase().replaceAll("[^a-z0-9]", "");
int left = 0, right = str.length() - 1;
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
}
Output:
String Palindrome Tests:
radar -> true
hello -> false
level -> true
A man a plan a canal Panama -> false
Number Palindrome Tests:
121 -> true
123 -> false
1331 -> true
12321 -> true
Ignoring case and spaces:
'A man a plan a canal Panama' -> true