Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
public class Solution {
/**
* @param s A string
* @return Whether the string is a valid palindrome
*/
public boolean isPalindrome(String s) {
int left = 0, right = s.length() - 1;
char[] str = s.toCharArray();
while(left < right) {
while(left < right &&
str[left] < 'A' || (str[left] > 'Z' && str[left] < 'a') || str[left] > 'z' ) {
if(str[left] >= '0' && str[left] <= '9') break;//考虑数字问题
left++;
}
while(right > left &&
str[right] < 'A' || (str[right] > 'Z' && str[right] < 'a') || str[right] > 'z' ) {
if(str[right] >= '0' && str[right] <= '9') break;
right--;
}
if(left == right) return true;
if(left < right) {
//考虑大小写问题
if(Math.abs(str[left] - str[right]) != 32 && Math.abs(str[left] - str[right]) != 0)
return false;
left++;
right--;
}
else return false;
}
return true;
}
}