1. 具体题目
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。
示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true
示例 2: 输入: "race a car" 输出: false
2. 思路分析
对于给定的字符串,其中可能包括有无效字符,所以需要先将原字符串中的无效字符去掉(用正则表达式判断),得到新字符串后用双指针比较首尾字符是否相等。
3. 代码
public boolean isPalindrome(String s) { //字符串为null和长度为0是不同的 if(s == null || s.length() == 0) return true; String str = s.replaceAll("[^0-9a-zA-Z]","").toLowerCase(); int left = 0; int right = str.length() - 1; while(left < right){ if(str.charAt(left) != str.charAt(right)){ return false; } left++; right--; } return true; }
原文地址:https://www.cnblogs.com/XRH2019/p/11829172.html
时间: 2024-10-27 11:54:58