w3resource

Java Project - Palindrome Checker

Java - Palindrome Checker using String Reversal:

Palindrome Checker :

Check whether a given word or phrase is a palindrome.

This project checks whether a given word or phrase reads the same backward as forward. The input is a string, and the program removes spaces and punctuation to determine if the string is a palindrome.

Input: A word or phrase.
Output: Whether the input is a palindrome or not.

Example:

  • Input: "madam"
  • Output: "Palindrome"
  • Input: "hello"
  • Output: "Not a palindrome"

Solution 1: Palindrome Checker using String Reversal

Code:

import java.util.Scanner;

public class PalindromeChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Initialize scanner to get user input

        System.out.println("Enter a word or phrase to check if it's a palindrome:");
        String input = scanner.nextLine(); // Get the input from the user

        // Remove spaces, punctuation, and convert to lowercase for comparison
        String cleanedInput = input.replaceAll("[^a-zA-Z]", "").toLowerCase(); 

        // Reverse the cleaned input
        String reversedInput = new StringBuilder(cleanedInput).reverse().toString();

        // Check if the cleaned input equals its reversed version
        if (cleanedInput.equals(reversedInput)) {
            System.out.println("Palindrome");
        } else {
            System.out.println("Not a palindrome");
        }

        scanner.close(); // Close the scanner
    }
}

Output:

 Enter a word or phrase to check if it's a palindrome:
madam
Palindrome

Explanation :

  • Input Handling: Uses a scanner to take user input.
  • Cleaning the Input: Removes non-alphabetic characters using regex and converts the string to lowercase.
  • Reversing the String: Uses StringBuilder to reverse the cleaned string.
  • Comparison: Compares the original cleaned string with its reversed version.
  • Output: Prints "Palindrome" if they match, otherwise prints "Not a palindrome".

Solution 2: Palindrome Checker using Two-Pointer Technique

Code:

import java.util.Scanner;

public class PalindromeCheckerTwoPointer {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Initialize scanner to get user input

        System.out.println("Enter a word or phrase to check if it's a palindrome:");
        String input = scanner.nextLine(); // Get the input from the user

        // Remove spaces, punctuation, and convert to lowercase for comparison
        String cleanedInput = input.replaceAll("[^a-zA-Z]", "").toLowerCase(); 

        // Use two pointers to compare characters from both ends of the string
        boolean isPalindrome = true; 
        int left = 0; 
        int right = cleanedInput.length() - 1;

        while (left < right) {
            if (cleanedInput.charAt(left) != cleanedInput.charAt(right)) {
                isPalindrome = false; // If characters don't match, it's not a palindrome
                break;
            }
            left++;  // Move the left pointer to the right
            right--; // Move the right pointer to the left
        }

        // Output based on the result
        if (isPalindrome) {
            System.out.println("Palindrome");
        } else {
            System.out.println("Not a palindrome");
        }

        scanner.close(); // Close the scanner
    }
}  

Output:

 Enter a word or phrase to check if it's a palindrome:
madem
Not a palindrome

Explanation:

  • Input Handling: Takes user input through a scanner.
  • Cleaning the Input: Uses regex to remove non-alphabetic characters and converts the string to lowercase.
  • Two-Pointer Technique: Initializes two pointers (left and right) and compares characters from the beginning and end of the cleaned string.
  • Check Characters: If any character comparison fails, it is marked as "Not a palindrome".
  • Output: Prints "Palindrome" if the loop completes without mismatches, otherwise prints "Not a palindrome".


Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/projects/java/java-project-palindrome-checker-in-words-and-phrases.php