要求:
给定一个字符串,验证其是否为回文串,只考虑字母和数字字符,可以忽略字母的大小写。此外将空字符串定义为有效的回文串。
示例:
输入:"A man, a plan, a canal: Panama"
输出:true
输入:"race a car"
输出:false
思路:
用两个指针,从头和尾开始向中间遍历
代码:
class Solution {
public boolean isPalindrome(String s) {
if (s.length() == 0)
return true;
int l = 0, r = s.length()-1;
while (l < r) {
//从头和尾向中间遍历
if (!Character.isLetterOrDigit(s.charAt(l))) {//字符不是字母和数字的情况
l++;
} else if (!Character.isLetterOrDigit(s.charAt(r))) {
r--;
} else {//都是合规的字符,开始比较二者是否相等
if (Character.toLowerCase(s.charAt(l)) != Character.toLowerCase(s.charAt(r))) {
return false;
}
l++;
r--;
}
}
return true;
}
}