Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama" Output: true
Example 2:
Input: "race a car" Output: false
two pointer
注意比较char是否相同的时候先取出char再转换大小写,否则会超时
time: O(n), space: O(1)
class Solution { public boolean isPalindrome(String s) { int p1 = 0, p2 = s.length() - 1; while(p1 <= p2) { if(!Character.isLetterOrDigit(s.charAt(p1))) { p1++; } else if(!Character.isLetterOrDigit(s.charAt(p2))) { p2--; } else { if(Character.toLowerCase(s.charAt(p1)) != Character.toLowerCase(s.charAt(p2))) return false; p1++; p2--; } } return true; } }