Leetcode 每日一题 125.验证回文串

news/2024/11/19 0:53:59/

问题定义

给定一个字符串s,我们需要判断它是否是一个回文串。但在此之前,我们需要将所有大写字符转换为小写字符,并移除所有非字母数字字符。只有经过这样处理后的字符串,我们才进行回文检测。

示例解析

以下是几个示例,帮助我们更好地理解这个问题:

  1. 输入: s = "A man, a plan, a canal: Panama"
    输出:true
    解释:移除非字母数字字符并转换为小写后,得到"amanaplanacanalpanama",这是一个回文串。

  2. 输入: s = "race a car"
    输出:false
    解释:处理后得到"raceacar",这不是一个回文串。

  3. 输入: s = " "
    输出:true
    解释:移除非字母数字字符后,得到空字符串"",空字符串被认为是回文串。

Java实现

在Java中,我们可以通过以下步骤实现回文串的检测:

  1. 将输入字符串转换为小写。
  2. 构建一个新的字符串,只包含字母和数字字符。
  3. 比较新字符串与其反转是否相等。

以下是具体的Java代码实现:

 

java

class Solution {public boolean isPalindrome(String s) {// 将字符串转换为小写s = s.toLowerCase();// 构建新的字符串,只包含字母和数字StringBuilder filtered = new StringBuilder();for (char c : s.toCharArray()) {if (Character.isLetterOrDigit(c)) {filtered.append(c);}}// 将过滤后的字符串与它的反转进行比较return filtered.toString().equals(new StringBuilder(filtered).reverse().toString());}
}

代码解析

  • s.toLowerCase():将输入字符串转换为小写,以忽略大小写的差异。
  • StringBuilder filtered:用于构建只包含字母和数字的新字符串。
  • Character.isLetterOrDigit(c):检查字符c是否为字母或数字,如果是,则添加到filtered中。
  • new StringBuilder(filtered).reverse().toString():获取filtered的反转字符串,并与原字符串进行比较。

http://www.ppmy.cn/news/1548111.html

相关文章

释放高级功能:Nexusflows Athene-V2-Agent在工具使用和代理用例方面超越 GPT-4o

在不断发展的人工智能领域,Nexusflows 推出了 Athene-V2-Agent 作为其模型系列的强大补充。这种专门的代理模型设计用于在功能调用和代理应用中发挥出色作用,突破了人工智能所能达到的极限。 竞争优势 Athene-V2-Agent 不仅仅是另一种人工智能模型&…

借助Aspose.Email,拆分和合并 Outlook PST 文件

PST(个人存储表)文件由 Microsoft Outlook 用于存储电子邮件、日历事件、联系人和其他项目。随着时间的推移,随着电子邮件和其他数据的积累,它们会变得非常大,这可能会导致性能问题、管理困难和更高的损坏风险。为了应…

工厂方法模式和抽象工厂模式

序 本文主要是记录学习设计模式当中的工厂方法和抽象工厂时碰到的疑惑和对答案的探讨 刚接触时的工厂方法模式和抽象工厂模式 工厂方法模式 类图 代码 //工厂public interface TVFactory {TV produce(); }public class TclTVFactory implements TVFactory{Overridepublic T…

Mac 使用mac 原生工具将mp4视频文件提取其中的 mp3 音频文件

简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研 学习经验:扎实基础 + 多做笔…

构建SSH僵尸网络

import argparse import paramiko# 定义一个名为Client的类,用于表示SSH客户端相关操作 class Client:# 类的初始化方法,接收主机地址、用户名和密码作为参数def __init__(self, host, user, password):self.host hostself.user userself.password pa…

鸿蒙UI开发——使用动画曲线

1、前 言 动画曲线是属性关于时间的变化函数,决定属性变化时产生动画的运动轨迹。某一时刻下动画曲线的斜率代表动画的速度,对应属性变化的快慢。 一条优秀的动画曲线具备连续光滑、符合用户意图、符合物理世界客观规律的特点。我们可结合用户的使用场…

Ubuntu24.04安装和配置Redis7.4

Ubuntu24.04安装和配置Redis7.4 #切换到root用户 sudo su -#更新源 apt update apt upgrade#安装 lsb-release、curl 和 gpg ,以便能够添加 Redis 仓库 apt install lsb-release curl gpg#导入 Redis 的 GPG 密钥 curl -fsSL https://packages.redis.io/gpg | gpg …

Xcode控制台“po“错误:表达式解析失败

iOS开发中,使用Xcode开发时,有时候原本运行好好的项目,突然调试时,发现po命令无法正常显示变量的值,无论是清空编译目录,还是重装Xcode,都无法解决问题。当使用po命令时,显示如下&am…