leetcode.字符串.125验证回文串-Java

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;
    }

猜你喜欢

转载自www.cnblogs.com/XRH2019/p/11829172.html
今日推荐