设置两个指针,两边夹,另写一个函数判断字符是否是字符数字
左边不是字符数字,向前移,否则,
右边不是字符数字,向前移,否则,
如果左右两边都是数字字符,则比较它们是否相等(或者是大小写切换)
如果不相等,则左右都向前移动一个
public boolean isPalindrome(String s) {
int length = s.length();
int i = 0;
int j = length-1;
while(i<j){
char c1 = s.charAt(i);
char c2 = s.charAt(j);
if(!isAlphanumeric(c1)){
i++;
}else if(!isAlphanumeric(c2)){
j--;
}else if(c1!=c2 && Math.abs(c1-c2)!=32){
return false;
}else{
i++;
j--;
}
}
return true;
}
public boolean isAlphanumeric(char ch) {
if (ch >= 'a' && ch <= 'z' || ch >= '0' && ch <= '9' || ch >= 'A' && ch <= 'Z') return true;
return false;
}