Valid Palindrome
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.
Solution
public class Solution {
public boolean isPalindrome(String s) {
if (s == null || s.length() <= 1) return true;
char[] arr = s.toCharArray();
int start = 0;
int end = arr.length - 1;
while (start <= end) {
while (start <= end && !(Character.isAlphabetic(s.charAt(start)) || Character.isDigit(s.charAt(start)))) {
start++;
}
while (start <= end && !(Character.isAlphabetic(s.charAt(end)) || Character.isDigit(s.charAt(end)))) {
end--;
}
if (start > end) {
break;
}
char startChar = s.charAt(start);
char endChar = s.charAt(end);
String staString = String.valueOf(startChar);
String endString = String.valueOf(endChar);
if (staString.equalsIgnoreCase(endString)) {
start++;
end--;
} else {
return false;
}
}
return true;
}
}