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.
这个题相当直观,这次做的时候我直接call Java String里面的toLowerCase, 这样就不需要考录比如 ‘X’ 和 ‘x' 其实是同一个字母的问题了
public class Solution {
public boolean isPalindrome(String s) {
s = s.trim().toLowerCase();
int len = s.length();
int start = 0, end = len-1;
while(start < end){ // if it terminates with start == end, it is a palindrome: e.g. "aba"
while(start < end && !isAlphaNumeric(s.charAt(start))) start ++;
while(start < end && !isAlphaNumeric(s.charAt(end))) end--;
if(start == end) break;
if(s.charAt(start) != s.charAt(end)) return false;
else{
start++;
end --;
}
}
return true;
}
public boolean isAlphaNumeric(char ch){
if(ch >= 'a' && ch <= 'z') return true;
else if(ch <= '9' && ch >= '0') return true;
else return false;
}
}