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

🧠 Test Your Knowledge

Which of these is a palindrome?