LeetCode 剑指 Offer II 018. 有效的回文
题目描述
给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。
本题中,将空字符串定义为有效的 回文串 。
示例 1:
输入: s = "A man, a plan, a canal: Panama"
输出: true
解释:"amanaplanacanalpanama" 是回文串
LeetCode 剑指 Offer II 018. 有效的回文
提示:
1 <= s.length <= 2 * 105
字符串 s 由 ASCII 字符组成
一、解题关键词
反转。比较 或者双指针 下标移动的比较
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
public boolean isPalindrome(String s) {
int len = s.length();
int left = 0, right = len - 1;
while (left < right) {
while (left < right && !Character.isLetterOrDigit(s.charAt(left))) {
++left;
}
while (left < right && !Character.isLetterOrDigit(s.charAt(right))) {
--right;
}
if (left < right) {
if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) {
return false;
}
++left;
--right;
}
}
return true;
}
2.知识点
能用双指针 一定要用。效率更高