https://leetcode.com/problems/valid-palindrome/#/description
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.
package go.jacob.day726;
/**
* 125. Valid Palindrome
*
* @author Jacob
*
*/
public class Demo1 {
/*
* 476 / 476 test cases passed. Status: Accepted Runtime: 9 ms
*/
public boolean isPalindrome(String s) {
if (s.isEmpty()) {
return true;
}
//申请两个指针
int left = 0, right = s.length() - 1;
char cLeft, cRight;
while (left < right) {
cLeft = s.charAt(left);
cRight = s.charAt(right);
//Character有现成的isLetterOrDigit()方法,所以不需要自己编写相应函数
if (!Character.isLetterOrDigit(cLeft))
left++;
else if (!Character.isLetterOrDigit(cRight))
right--;
else {
if (Character.toLowerCase(cLeft) != Character.toLowerCase(cRight))
return false;
left++;
right--;
}
}
return true;
}
}