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.
public class Solution {
public boolean isPalindrome(String s) {
int len = s.length();
if(len <= 1)return true;
int begin = 0;
int end = len-1;
while(begin<end)
{
while(begin<end&&!isChar(s.charAt(begin)))
begin++;
while(begin<end&&!isChar(s.charAt(end)))
end--;
if(toLowerCase(s.charAt(begin++))!=toLowerCase(s.charAt(end--)))
return false;
}
return true;
}
public boolean isChar(char ch)
{
if(ch>='a'&&ch<='z')
return true;
else if(ch>='0'&& ch<='9')
return true;
else if(ch>='A'&& ch<='Z')
{
return true;
}
else
return false;
}
public char toLowerCase(char ch)
{
if(ch>='A'&& ch<='Z')
{
return (char)(ch+32);
}
else
return ch;
}
}