class Palindrome2 { static void normalize(StringBuffer s) { int i = 0; while (i < s.length()) { char c = s.charAt(i); if (!Character.isLetter(c)) s.deleteCharAt(i); else s.setCharAt(i++, Character.toLowerCase(c)); } } static boolean isSymmetric(StringBuffer s) { int len = s.length(); for (int i = 0; i < len; ++i) if (s.charAt(i) != s.charAt(len-i-1)) return false; return true; } public static void main(String[] args) { String[] strings = { "Madam", "Lid off a daffodil", "Norma is as selfless as I am, Ron", "Not a palindrome"}; for (int i = 0; i < strings.length; ++i) { StringBuffer s = new StringBuffer(strings[i]); System.out.print("\"" + s + "\" is "); normalize(s); if (!isSymmetric(s)) System.out.print("not "); System.out.println("a palindrome"); } } } /* Output: "Madam" is a palindrome "Lid off a daffodil" is a palindrome "Norma is as selfless as I am, Ron" is a palindrome "Not a palindrome" is not a palindrome */