面试经典-34-验证回文串

题目

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

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。

示例 1:

输入: s = "A man, a plan, a canal: Panama"

输出:true

解释:"amanaplanacanalpanama" 是回文串。

java 复制代码
class Solution {
    public boolean isPalindrome(String s) {
        int i = 0, j = s.length() - 1;
        while (i <= j) {
            while (i <= j && !Character.isLetter(s.charAt(i)) && !Character.isDigit(s.charAt(i))) {
                i++;
            }
            while (i <= j && !Character.isLetter(s.charAt(j)) && !Character.isDigit(s.charAt(j))) {
                j--;
            }
            if (i > j) {
                break;
            }
            char leftChar = Character.toLowerCase(s.charAt(i));
            char rightChar = Character.toLowerCase(s.charAt(j));
            if (leftChar != rightChar) {
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
}
相关推荐
海底火旺8 分钟前
"神奇!不用除法,如何算出数组中每个元素'邻居'的乘积?"
前端·javascript·面试
JiangJiang9 分钟前
🧠 面试官让我渲染10万条数据?看我用 React 虚拟列表轻松搞定
前端·react.js·面试
居然是阿宋10 分钟前
Kotlin函数体详解:表达式函数体 vs 代码块函数体——使用场景与最佳实践
java·开发语言·kotlin
小钊(求职中)13 分钟前
Java后端开发面试题(含答案)
java·开发语言·后端·面试
User_芊芊君子13 分钟前
【C语言经典算法实战】:从“移动距离”问题看矩阵坐标计算
c语言·算法·矩阵
lllsure14 分钟前
JWT令牌
java
uhakadotcom22 分钟前
轻松理解vLLM:大语言模型推理的高效利器与实用示例
后端·面试·github
独立开阀者_FwtCoder31 分钟前
用 pnpm + workspace + changesets 打造monorepo工程,【前端er必看!】
前端·javascript·面试
北漂老男孩1 小时前
Spring Boot 配置处理器深度解析:元数据驱动的工程实践
java·spring boot·后端
我在北国不背锅1 小时前
JDBC插件式数据库连接器
java·数据库·jdbc