验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明: 本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
思路+代码+注释:
public boolean isPalindrome(String s) {
/*
思路:首先将字符串都转换为小写,定义指针left、right指向左右两端,如果left不为字母或者数字那么left++,如果
right不为字母或者数字那么right--,如果都为字母或者数字那么比较是否相同如果相同left++、right--继续比较,否则返回false
直到left==right
*/
int left=0;
int right=s.length()-1;
s=s.toLowerCase();
char[] chars=s.toCharArray();
while (left<right)
{
if (!isYouXiao(chars[left]))
{
left++;
}
if (!isYouXiao(chars[right]))
{
right--;
}
if (isYouXiao(chars[left])&&isYouXiao(chars[right]))
{
if (chars[left]==chars[right])
{
left++;
right--;
}else {
return false;
}
}
}
return true;
}
private boolean isYouXiao(char c)
{
if (c>='0' && c<='9')
{
return true;
}
if (c>='a' && c<='z')
{
return true;
}
return false;
}