Star

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.

Explanation

双指针问题。

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Solution {
public boolean isPalindrome(String s) {
if (s == null || s.length() == 0) return true;
int i=0; int j = s.length() -1 ;
s = s.toLowerCase();
while (i < j) {
if (!Character.isLetterOrDigit(s.charAt(i))) {
i ++;
} else if (!Character.isLetterOrDigit(s.charAt(j))) {
j--;
} else if (s.charAt(i)!=s.charAt(j)) {
return false;
} else {
i++; j--;
}
}
return true;
}
}