题目链接
验证回文串
题目描述
注意点
- 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;}
}
关键点
- 无