[LeetCode 125] Valid Palindrome

Question

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.

Stats

 Frequency 5 Difficulty 2 Adjusted Difficulty 1 Time to use --------

Ratings/Color = 1(white) 2(lime) 3(yellow) 4/5(red)

Analysis

Wow, it’s frequency 5!

This is a very classic and easy question.

Code

``````public boolean isPalindrome(String s) {
int len = s.length();
s = s.toLowerCase();
int left = 0, right = len - 1;
while (left < right) {
while (left < len && !isAlphanumeric(s.charAt(left)))
left ++;
while (right >= 0 && ! isAlphanumeric(s.charAt(right)))
right --;
if (left == len && right == -1) return true;
if (left == len || right == -1) return false;
if (s.charAt(left) != s.charAt(right))
return false;
left ++;
right --;
}
return true;
}

private boolean isAlphanumeric(char c) {
return ('a' <= c && c <= 'z')
|| ('0' <= c && c <= '9');
}
``````