Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama"
Output: true
Example 2:
Input: "race a car"
Output: false
注:palindrome:回文(指顺读和倒读都一样的词语)
alphanumeric:文字数字的,包括文字与数字的
分别用一个头指针和尾指针指向两端的字母,如果是字母或数字时开始比较,如果不相等返回false,循环结束没有返回false说明所有的字母从两端到中间都是相等的,返回true。注意字母区分大小写。
代码:
class Solution {
public boolean isPalindrome(String s) {
int start=0;
int end=s.length()-1;
if(s.length()==0)
return true;
char sChar,eChar;
while(start<=end){
sChar=s.charAt(start);
eChar=s.charAt(end);
if(!Character.isLetterOrDigit(sChar)){
start++;
}else if(!Character.isLetterOrDigit(eChar)){
end--;
}else{
if(Character.toLowerCase(sChar)!=Character.toLowerCase(eChar)){
return false;
}
start++;
end--;
}
}
return true;
}
}