验证回文串
题目
验证回文串(力扣:125)
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
分析
屏蔽大小写差异。使用双指针,分别从收尾开始进行对比判断。如果指针位的字符是无效字符,则移动指针。当两个指针位置的字符都是有效字符时,进行对比,如果不相等则返回false。如果能遍历完成,返回true。
代码实现
/**
* 125. 验证回文串
* @param s
* @return
*/
public boolean isPalindrome(String s) {
if (s == null){
return false;
}
String lowS = s.toLowerCase();
int start = 0, end = lowS.length() -1;
while (end >start){
while (end >start && !Character.isLetterOrDigit(lowS.charAt(start))){
start++;
}
while (end >start && !Character.isLetterOrDigit(lowS.charAt(end))){
end--;
}
if (lowS.charAt(start) != lowS.charAt(end)){
return false;
}
start++;
end--;
}
return true;
}