题目链接
验证回文串
题目描述
注意点
- 1 <= s.length <= 200000
- s 仅由可打印的 ASCII 字符组成
- 将所有大写字符转换为小写字符
- 忽略所有非字母数字字符
解答思路
- 首先将大写字母转为小写字母,再双指针分别从首尾判断对应位置的字符是否相同,注意当指针指向的字符非字母数字字符时,指针要进行移动,遍历完所有字符都相同说明是回文串
代码
class Solution {
public boolean isPalindrome(String s) {
s = s.toLowerCase();
int n = s.length();
int left = 0, right = n - 1;
while (left < right) {
if (((s.charAt(left) - 'a') < 0 || (s.charAt(left) - 'a') > 25) && ((s.charAt(left) - '0') < 0 || (s.charAt(left) - '0') > 9)) {
left++;
continue;
}
if (((s.charAt(right) - 'a') < 0 || (s.charAt(right) - 'a') > 25) && ((s.charAt(right) - '0') < 0 || (s.charAt(right) - '0') > 9)) {
right--;
continue;
}
if (s.charAt(left) != s.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
}
关键点
- 无