LeetCode-125. 验证回文串
题目来源
题目详情
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明: 本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
解释: "amanaplanacanalpanama" 是回文串
示例 2:
输入: "race a car"
输出: false
解释: "raceacar" 不是回文串
提示:
1 <= s.length <= 2 * 105
- 字符串
s
由 ASCII 字符组成
题解分析
解法一:双指针法
- 本题是需要判断回文串,一看到回文,我们就应该联想到双指针法,因为回文的特点就是头尾字符对应的,也因此可以考虑使用首尾指针来求解。
- 但是,本题有一个特点就是,这里并不是所有字符都是有效的,有一些字符是不必要考虑的,所以,在遍历的过程中,需要跳过这些不合法的字符,而只比较合法的字符。
class Solution {
public boolean isPalindrome(String s) {
s = s.trim();
int n = s.length();
s = s.toLowerCase();
int left = 0, right = n-1;
while(left <= right){
char chl = s.charAt(left);
char chr = s.charAt(right);
if(Character.isLetterOrDigit(chl) && Character.isLetterOrDigit(chr)){
if(chl != chr){
return false;
}
left++;
right--;
}
if(!Character.isLetterOrDigit(chl)){
left++;
}
if(!Character.isLetterOrDigit(chr)){
right--;
}
}
return true;
}
}
Either Excellent or Rusty
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
2021-04-01 82. 删除排序链表中的重复元素 II + 链表 + 判重
2021-04-01 41. 缺失的第一个正数 + 哈希表 + 思维