题意非常简单,一个从头找一个从尾部找。如果碰到非数字和非字母的都跳过,然后比较首尾。
注意两个function: Character.isLetterOrDigit(char x);
Character.toLowerCase(char x);
public boolean isPalindrome(String s) {
if(s==null || s.length()==0) return true;
int i=0, j=s.length()-1;
while(i<j){
char a = s.charAt(i);
char b = s.charAt(j);
if(!Character.isLetterOrDigit(a)){
i++;
continue;
}
if(!Character.isLetterOrDigit(b)){
j--;
continue;
}
if(Character.toLowerCase(a)!=Character.toLowerCase(b)){
return false;
}
i++; j--;
}
return true;
}
No comments:
Post a Comment