题目要求:
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.
即给你一个字符串,只考虑字母和数字,忽略大小写,判断这个字符串是否为回文字符串
思想:首先把这个字符串全部转为大写或全部转为小写,如果字符串为空或者长度为1,直接返回true
否则,让i和j分别从字符串的左右两边向中间移动,判断在i,j位置的是不是字母或者数字,如果不是,就继续往中间找
public class Solution {
public boolean isPalindrome(String s) {
s = s.toLowerCase();
if(s==null||s.length()<=1){
return true;
}
for(int i=0,j=s.length()-1;i<j;i++,j--)
{
while(i<j&&!isAlpha(s.charAt(i)))
{
i++;
}
while(i<j&&!isAlpha(s.charAt(j)))
{
j--;
}
if(s.charAt(i)!=s.charAt(j))
{
return false;
}
}
return true;
}
public boolean isAlpha(char ch) {
if ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'z'))
{
return true;
}else
{
return false;
}
}
}