验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串。字母和数字都属于字母数字字符。
给你一个字符串 s,如果它是 回文串,返回 true;否则,返回false

示例 1:

输入: s = "A man, a plan, a canal: Panama"
输出:true
解释:"amanaplanacanalpanama" 是回文串。

示例 2:

输入:s = "race a car"
输出:false
解释:"raceacar" 不是回文串。

示例 3:

输入:s = " "
输出:true
解释:在移除非字母数字字符之后,s 是一个空字符串 "" 。
由于空字符串正着反着读都一样,所以是回文串。
class Solution {
    public boolean isPalindrome(String s) {
        String str = removeNonAlphanumeric(s);
        int p =0, q = str.length()-1;

        while(p<q) {
            if(str.charAt(p) == str.charAt(q)) {
                p++;
                q--;
            }else {
                return false;
            }
        }
        return true;
    }

    // public String replaceAll(String regex, String replacement)
    // 这个方法接受两个参数:
    // regex:一个正则表达式,用于指定要被替换的字符序列的模式。
    // replacement:用于替换匹配到的字符序列的字符串。
    public static String removeNonAlphanumeric(String str){
        String newStr = str.toLowerCase().replaceAll("[^a-z0-9]", "");
        return newStr;
    }
}
posted @ 2024-09-04 11:09  柴勇玛喜达  阅读(28)  评论(0)    收藏  举报