
java
class Solution {
public boolean isPalindrome(String s) {
//定义开头结尾指针
int left = 0;
int right = s.length() -1;
//只要两指针没相遇就继续
while(left < right){
//遇到空格和标点符号直接跳过
//这里需要额外再加left < right条件,防止全是标点符号导致越界
while(left < right && !Character.isLetterOrDigit(s.charAt(left))){
left++;
}
while(left <right && !Character.isLetterOrDigit(s.charAt(right))){
right--;
}
//统一将大写转换成小写
if(Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))){
return false;
}
left++;
right--;
}
return true;
}
}
Character.isLetterOrDigit(char ch):
判断字符是否为字母或数字
Character.toLowerCase(char ch):
大写变小写,已经是小写或者数字的原样返回