Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
“A man, a plan, a canal: Panama”is a palindrome.
“race a car”is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
解题方法:使用的是二分查找里面的快排算法。但是这里之判断大小写字母和所有的数字。
public class Solution {
public boolean isPalindrome(String s) {
if(s==null||s.length()==0||s.length()==1) return true;
int i=0,j=s.length()-1;
char left,right;
while(i<j){
left=s.charAt(i);
right=s.charAt(j);
while(i<j&&!((left>='a'&&left<='z')||(left>='A'&&left<='Z')||(left>='0'&&left<='9'))){
i++;
left=s.charAt(i);
}
if(left>='a'&&left<='z') left=(char) ('A'-'a'+left);
while(i<j&&!((right>='a'&&right<='z')||(right>='A'&&right<='Z')||(right>='0'&&right<='9'))){
j--;
right=s.charAt(j);
}
if(right>='a'&&right<='z') right=(char) ('A'-'a'+right);
if(left-right==0){
i++; j--;
}else return false;
}
return true;
}
}