题目:给定一个字符串,请判断它是不是回文。假设只需要考 虑字母和数字字符,并忽略大小写。例如,"Was it a cat I saw?"是一个回文字符串,而"race a car"不是回文字符串。
// 通过两个指针在字符串头部和尾部分别同时向中间移动
// 每移动一次判断是否为子母和数字,如果是字母和数字
// 则将字母同时转化为小写比较(因为忽略字母大小写)
// 如果不是字母和数字则对应指针再往中间移动
public boolean isPalindrome(String s) {
int i = 0;
int j = s.length() - 1;
while (i < j) {
char ch1 = s.charAt(i);
char ch2 = s.charAt(j);
if (!Character.isLetterOrDigit(ch1)) {
i++;
} else if (!Character.isLetterOrDigit(ch2)) {
j--;
} else {
ch1 = Character.toLowerCase(ch1);
ch2 = Character.toLowerCase(ch2);
if (ch1 != ch2) {
return false;
}
i++;
j--;
}
}
return true;
}



