- 1.题目
- 2.思路和代码
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 解释:"amanaplanacanalpanama" 是回文串 示例 2: 输入: "race a car" 输出: false 解释:"raceacar" 不是回文串
提示:
- 1 <= s.length <= 2 * 105
- 字符串 s 由 ASCII 字符组成
使用双指针进行验证,先判断是不是数字或者字母:
再用将字符统一成小写进行比较,如果出现一处不相同则false
class Solution { public boolean isPalindrome(String s) { if(s.length() == 0){ return true; } int l = 0; int r = s.length() - 1; while(l < r){ while(l < r && !Character.isLetterOrDigit(s.charAt(l))){ l++; } while(l < r && !Character.isLetterOrDigit(s.charAt(r))){ r--; } if(Character.toLowerCase(s.charAt(l)) != Character.toLowerCase(s.charAt(r))){ return false; } l++; r--; } return true; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)