算法;
首先判断是否为空或只有一个元;
然后再去掉所有符号只保留英文字母和数字;
把结果存储一个新的String;
然后开始判断 两小标 一个从第一个元素开始,另一个从最后一个元素开始;
前者往前走,后者往后来;
如果不相等返回假;
如果字符串结束了;
否则返回真;
class Solution { public boolean isPalindrome(String s) { if(s.isEmpty()||s.length()==1&&s.charAt(0)==' ') return true; String tmp = ""; for(int i = 0;i<s.length();i++){ char curr = s.charAt(i); if(isLetter(curr)||isDigit(curr)){ if(isUpper(curr)) curr+=32; if(isLetter(curr)||isDigit(curr)) tmp+=curr; } } int left = 0,right = tmp.length()-1; while(left<right){ if(tmp.charAt(left)!=tmp.charAt(right)) return false; left++; right--; } return true; } private boolean isLetter(char s){ return s>=65&&s<=92||s>=97&&s<=122; } private boolean isUpper(char s){ return s>=65&&s<=92; } private boolean isDigit(char s){ return s>=48&&s<=57; } }