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.isEmpty()) return true;
s = s.toLowerCase();
int start = 0, end = s.length()-1;
while(start < end){
char i = s.charAt(start), j = s.charAt(end);
if(!((i >='a' && i<='z') || (i>='0' && i<='9'))) {
start++;
continue;
}
if(!((j >='a' && j<='z') || (j>='0' && j<='9'))) {
end--;
continue;
}
if(s.charAt(start)!=s.charAt(end)) return false;
else {
start++;
end--;
}
}
return true;
}
}