力扣(LeetCode)验证回文串 个人题解

Posted Axiangcoding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣(LeetCode)验证回文串 个人题解相关的知识,希望对你有一定的参考价值。

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

输入: "race a car"
输出: false

 

 

这题是验证回文串的一个变种,因为里面有干扰的字符串存在,不能直接判断,不过也很好解决,直接添加过滤的语句,遇到不是数字且不是字母的直接跳过,只有两边都是合法的,才进行比较。

特别注意题意,要求忽略字母的大小写。

 

代码如下:

class Solution {
    public boolean isPalindrome(String s) {
        int left = 0, right = s.length() - 1;
        char ch1, ch2;
        while (left < right) {
            if (Character.isLetter(s.charAt(left)) || Character.isDigit(s.charAt(left))) {
                ch1 = s.charAt(left);
            } else {
                left++;
                continue;
            }
            if (Character.isLetter(s.charAt(right)) || Character.isDigit(s.charAt(right))) {
                ch2 = s.charAt(right);
            } else {
                right--;
                continue;
            }
            if (Character.toLowerCase(ch1) == Character.toLowerCase(ch2)) {
                left++;
                right--;
            }
            else
                return false;
        }
        return true;
    }
}

 

以上是关于力扣(LeetCode)验证回文串 个人题解的主要内容,如果未能解决你的问题,请参考以下文章

力扣(LeetCode)125. 验证回文串

LeetCode-125-验证回文串

LeetCode 0125. 验证回文串

《LeetCode之每日一题》:132.验证回文串

力扣(LeetCode)颠倒二进制位 个人题解

力扣(LeetCode)位1的个数 个人题解