package com.interview.string;
/**
* Date 04/09/2016
* @author Tushar Roy
*
* 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.
*
* https://leetcode.com/problems/valid-palindrome/
*/
public class ValidPalindrome {
public boolean isPalindrome(String s) {
int start = 0;
int end = s.length() - 1;
while (start < end) {
if (!isAlphaNum(s.charAt(start))) {
start++;
} else if (!isAlphaNum(s.charAt(end))) {
end--;
} else {
if (Character.toLowerCase(s.charAt(start++)) != Character.toLowerCase(s.charAt(end--))) {
return false;
}
}
}
return true;
}
private boolean isAlphaNum(char ch) {
if ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
return true;
}
return false;
}
}