验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
思路:双指针
代码:
class Solution {
public boolean isPalindrome(String s) {
if(s==""||s==null){
return true;
}
int n=s.length();//n为s的长度
boolean flag=true;//如果是回文,则为true。默认为true
//判断回文
//利用双指针进行判断
int i=0,j=n-1;
for(;i<j;i++,j--){
char c1=Character.toLowerCase(s.charAt(i));//将两个字符都转换成小写
char c2=Character.toLowerCase(s.charAt(j));
while(i<j&&!Character.isLetterOrDigit(c1)){//如果字符属于字母或数字,就跳过,直到找到是字母或数字的字符为止
c1=Character.toLowerCase(s.charAt(++i));
}
while(i<j&&!Character.isLetterOrDigit(c2)){
c2=Character.toLowerCase(s.charAt(--j));
}
if(c1!=c2){//如果有不等的字符就说明不是回文
flag=false;
break;
}
}
return flag;
}
}
注意:这题里面如果没有一个字符是数字或者字母,也被认为是true