题目
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 :
输入: “A man, a plan, a canal: Panama”
输出: true
注意点
记得将数组中字母统一转换为小写或者大写。
实现
public boolean isPalindrome(String s) {
if(s == null) return true;
StringBuffer sb = new StringBuffer();
//保留字符串中的数字和字母
for(int i = 0; i < s.length(); i ++){
if(Character.isLetterOrDigit(s.charAt(i))){
sb.append(s.charAt(i));
}
}
//将数组中字母转换为小写
s = sb.toString().toLowerCase();
int left = 0;
int right = s.length() - 1;
//判断对应位是否相等
while(left < right){
//不相等,直接返回fasle
if(s.charAt(left) != s.charAt(right)){
return false;
}
left ++;
right --;
}
return true;
}