//  Data Structures with Java by John R. Hubbard
//  Copyright McGraw-Hill, 2001
//  Problem 4.9 on page 88

public class Pr0409
{ public static void main(String[] args)
  { System.out.println("isPalindrome(\"\") = " + isPalindrome(""));
    System.out.println("isPalindrome(\"A\") = " + isPalindrome("A"));
    System.out.println("isPalindrome(\"AA\") = " + isPalindrome("AA"));
    System.out.println("isPalindrome(\"AB\") = " + isPalindrome("AB"));
    System.out.println("isPalindrome(\"AAA\") = " + isPalindrome("AAA"));
    System.out.println("isPalindrome(\"AAB\") = " + isPalindrome("AAB"));
    System.out.println("isPalindrome(\"ABA\") = " + isPalindrome("ABA"));
    System.out.println("isPalindrome(\"ABC\") = " + isPalindrome("ABC"));
    System.out.println("isPalindrome(\"AAAA\") = " + isPalindrome("AAAA"));
    System.out.println("isPalindrome(\"AAAB\") = " + isPalindrome("AAAB"));
    System.out.println("isPalindrome(\"AABC\") = " + isPalindrome("AABC"));
    System.out.println("isPalindrome(\"ABBA\") = " + isPalindrome("ABBA"));
    System.out.println("isPalindrome(\"ABBC\") = " + isPalindrome("ABBC"));
    System.out.println("isPalindrome(\"ABCA\") = " + isPalindrome("ABCA"));
    System.out.println("isPalindrome(\"ABCD\") = " + isPalindrome("ABCD"));
  }
  
  public static boolean isPalindrome(String s)
  { // returns true iff the reverse of s is the same as s 
    int len = s.length();
    if (len<2) return true;
    if (s.charAt(0) != s.charAt(len-1)) return false;
    if (len==2) return true;
    return isPalindrome(s.substring(1,len-1));
  }
}
