Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Example:
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.
Return 0 / 1 ( 0 for false, 1 for true ) for this problem
Method:
Two pointer
Solution:
Time: O(n) Space: O(1)
public class Solution {
public int isPalindrome(String A) {
char[] arr = A.toCharArray();
int left = 0;
int right = arr.length - 1;
while (left <= right) {
if (!Character.isLetterOrDigit(arr[left])) {
left ++;
} else if (!Character.isLetterOrDigit(arr[right])) {
right --;
} else if (Character.toLowerCase(arr[left]) != Character.toLowerCase(arr[right])) {
return 0;
} else {
left ++;
right --;
}
}
return 1;
}
}