/**
* 验证回文串
* 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
* <p>
* 说明:本题中,我们将空字符串定义为有效的回文串。
* <p>
* 示例 1:
* <p>
* 输入: "A man, a plan, a canal: Panama"
* 输出: true
* 示例 2:
* <p>
* 输入: "race a car"
* 输出: false
* 解题思路:定义两个首尾指针,将所有字符转为小写,不是数字或者字母时直接移动指针,比较字符首尾是否相等。
*/
public class IsPalindrome {
public static void main(String[] args) {
String s = "A man, a plan, a canal: Panama";
isPalindrome(s);
}
public static boolean isPalindrome(String s) {
//定义两个指针,一个指向第一个字符串的头,一个指向字符串的末尾
int i=0,j=s.length()-1;
//将字符串所有字母转为小写字母
s=s.toLowerCase();
while (i<j){
//如果不是数字或者字母,指针向后移动一位
if(!Character.isLetterOrDigit(s.charAt(i))){
i++;
continue;
}
//如果不是数字或者字母j指针向前移动一位
if(!Character.isLetterOrDigit(s.charAt(j))){
j--;
continue;
}
if(s.charAt(i)!=s.charAt(j)){
return false;
}
//移动指针
i++;
j--;
}
return true;
}
}
Leetcode.验证回文串(Java实现)
最新推荐文章于 2025-01-18 15:49:10 发布