public class PalindromeV2
{
	public static boolean isPalindrome(String input)
	{
		// easy cases
		if (input.length() == 0)
			return true;
		if (input.length() == 1)
			return true;
	
		// prep input for "hard cases"
		String workString;
		workString = cleanString(input);
						
		if (workString.charAt(0) == workString.charAt(workString.length() - 1))
			return isPalindrome(workString.substring(1, workString.length() - 1)); 
		else
			return false;
	}

	// creates a new String which is the original 
	// with non-letters removed, and all lower case
	public static String cleanString(String incoming)
	{
		// easy case - String is empty
		if (incoming.length() == 0)
			return "";
		// hard case - either we have a character in first position or not
		else
			if (Character.isLetter(incoming.charAt(0)))
				return Character.toLowerCase(incoming.charAt(0)) + cleanString(incoming.substring(1));
			else
				return cleanString(incoming.substring(1));
	}

}	