Palindrome String in Java

By: Grant Braught Viewed: 221 times  Printer Friendly Format    


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());
    }
}



Most Viewed Articles (in Java )

Latest Articles (in Java)

Comment on this tutorial

Subscribe to Tutorials

Related Tutorials

Archived Comments

1. the discussion is not enogh
View Tutorial          By: gulstan at 2011-03-27 03:47:24

2. The one more best way is

public cl

View Tutorial          By: Palla Subramanyam at 2012-01-25 20:18:03

3. This should save some time

class pa

View Tutorial          By: vamsi gude at 2012-03-20 18:27:24

4. The smiple easy and best way is :)
--------

View Tutorial          By: Sandhya at 2012-06-21 06:08:25

5. @Palla Subramanyam : Your logic is correct, but SO
View Tutorial          By: Roopesh H at 2012-07-27 04:47:48

6. Why use recursion in Java, even for Strings? The s
View Tutorial          By: Kristoffer L at 2012-11-21 01:51:36

7. simple way friends:
public class palindrome

View Tutorial          By: Manoj at 2013-01-07 02:18:00

8. this works
-------------------------------

View Tutorial          By: Aeron at 2013-10-20 04:50:51

9. import java.util.*;

class Pstring<

View Tutorial          By: Bhaskar.pg at 2014-05-29 12:39:52

10. DavidFaf
View Tutorial          By: DavidFaf at 2016-11-27 18:33:29