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 static boolean solution_3_1(String str){
String temp=str.toLowerCase();
if(temp.equals("")){
return true;
}
else{
int left=0;
int right=temp.length()-1;
while(left<right){
while(!isvalid(temp.charAt(left)))
left++;
while(!isvalid(temp.charAt(right)))
right--;
if(temp.charAt(left)==temp.charAt(right)){
char c1=temp.charAt(left);
char c2=temp.charAt(right);
left++;
right--;
}
else{
return false;
}
}
return true;
}
}
private static boolean isvalid(char c){
if(c>='a'&&c<='z')
return true;
if(c>='0'&&c<='9')
return true;
return false;
}