Programming Tutorials

Palindrome String in Java

By: Grant Braught in Java Tutorials on 2011-01-27  

Checking if a String is a Palindrome is a common assignment given to Java students. This sample class is a helpful class that checks for various scenarios to find out if the given string is a palindrome.
public class Palindrome {
    private String pal;
    
    public Palindrome(String initPal) {
	pal = initPal.toUpperCase();
    }
    
    public boolean isPalindrome() {
       
	if (pal.length() <= 1) {
	    // String has only one character so it
	    // is a Palindrome by definition.
	    return true;		// BASE CASE.
	}
	
	// Get the first and last characters of the String.
	char first = pal.charAt(0);
	char last = pal.charAt(pal.length()-1);
	
	if (Character.isLetter(first) &&
	    Character.isLetter(last)) {
	    // The first and last characters are both letters..

	    if (first != last) {
		// The first and last letters are different
		// so the string is not a Palindrome.
		return false;           // BASE CASE.
	    }
	    else {
		// The first and last characters are both letters,
		// and they are both the same. So, the string is 
		// a palindrome if the substring created by dropping
		// the first and last characters is a palindrome.
		Palindrome sub = new Palindrome(
			         pal.substring(1,pal.length()-1));
		return sub.isPalindrome();  // RECURSIVE CASE.
	    }
	}
	else if (!Character.isLetter(first)) {
	    // The first character in the string is not a letter.
	    // So the string is a palindrome if the substring created
	    // by dropping the first character is a palindrome.
	    Palindrome sub = new Palindrome(pal.substring(1));
	    return sub.isPalindrome();      // RECURSIVE CASE.
	}
	else {
	    // The last character in the string is not a letter.
	    // So the string is a palindrome if the substring created
	    // by dropping the last character is a palindrome.
	    Palindrome sub = new Palindrome(
                             pal.substring(0,pal.length()-1));
	    return sub.isPalindrome();      // RECURSIVE CASE.
	}
    }

    public static void main(String[] args) {
	Palindrome p1 = new Palindrome("Madam, I'm Adam.");
	System.out.println(p1.isPalindrome());
	Palindrome p2 = new Palindrome("Nope!");
	System.out.println(p2.isPalindrome());
	Palindrome p3 = new Palindrome("dad");
	System.out.println(p3.isPalindrome());
	Palindrome p4 = new Palindrome("Go hang a salami, I'm a lasagna hog.");
	System.out.println(p4.isPalindrome());
    }
}






Add Comment

* Required information
1000

Comments

No comments yet. Be the first!

Most Viewed Articles (in Java )

Latest Articles (in Java)