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.
从字符串首尾进行检索,先判定是否为数字或者字母,不是的话跳过继续检索,如果出现不同则返回false,如果遍历整个字符串都没有出现不同则返回true。时间复杂度为O(n)。
public boolean isPalindrome(String s) {
int i = 0;
int j = s.length()-1;
while(i<j){
while(i<j && !Character.isLetterOrDigit(s.charAt(i)))
i++;
while(i<j && !Character.isLetterOrDigit(s.charAt(j)))
j--;
if(Character.toLowerCase(s.charAt(i))!=Character.toLowerCase(s.charAt(j)))
return false;
i++;
j--;
}
return true;
}