125. 验证回文串 【简单题】

2023-09-22 15:17:37

题目

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

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

给你一个字符串 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 是一个空字符串 "" 。
由于空字符串正着反着读都一样,所以是回文串。

思路一:筛选+判断

代码一

c++
class Solution {
public:
    bool isPalindrome(string s) {
        // 2023年9月22日 14:20
        // 思路:复制一个新字符串,遍历源字符串,满足条件则加入新字符串。
        //  判断:从0到一半,依次遍历,只要跟相应的字符相同即可
        string res;
        bool flag = false;
        int i;
        for (i = 0; i < s.length(); i++) {
            if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= '0' && s[i] <= '9')) {
                res += s[i];
            }
            else if (s[i] >= 'A' && s[i] <= 'Z') {
                s[i] += 32;
                res += s[i];
            }
        }
        int len = res.length();
        if(len == 1){
            return true;
        }
        int j;
        for (j = 0; j < (len / 2); j++) {
            if (res[j] != res[len-1 - j]) {
                break;
            }
        }
        if (j == (len / 2)) {
            flag = true;
        }
        return flag;      
            
        
    }
};
python
class Solution:
    def isPalindrome(self, s: str) -> bool:
        res = ""    # 定义一个空字符串
        for ch in s:    // 对字符串s进行依次遍历,ch为遍历的当前字符
            if(ch.isalnum()):    // 如果当前字符是字母或数字
                res += ch.lower()    // 若当前字符是字母,则把它变为小写字母
        return res == res[::-1]    // 字符串反转,比较

答案提供的两个函数:

isalnum:

判断一个字符是否是字母或者(十进制)数字,若为字母或者数字,则返回True(非0值),否者返回False(0)

tolower、toupper

答案思路

更多推荐

【Java 基础篇】Java Lambda表达式详解

Lambda表达式是Java编程语言中引入的一个强大的特性,它使得编写更加简洁、可读性更强的代码变得更容易。本文将详细介绍Lambda表达式的概念、语法、用法以及示例,以帮助基础的Java开发者理解和应用Lambda表达式。什么是Lambda表达式Lambda表达式,也称为闭包,是一种匿名函数,它可以传递到方法作为参数

固态继电器的用途概述

固态继电器已成为现代电子电气系统中不可或缺的组件。这些设备以其可靠性和多功能性而闻名,这使得它们在广泛的应用中至关重要。在本文中,我们将探讨固态继电器的功能和应用。固态继电器:简介固态继电器(也称为SSR,固态式开关,或固态开关)是一种集成的无触点式的电子开关设备,由集成电路(C)和分立元件封装到一个紧凑的固态结构中。

如何判断自己的服务器是不是中了勒索病毒,勒索病毒解密数据恢复

勒索病毒日益横行,给企业的生产经营和个人数据造成了极大的影响。但是对单一的企业和个人而言,遭受勒索病毒攻击毕竟是低频率事件,这也导致很多人中招之后,无法判断出具体的问题,进而没有及时采取应对措施,导致事态和损失进一步扩大。接下来云天数据恢复中心将告诉大家如何判断自己的服务器是不是中了勒索病毒。1.所有文件扩展名都发生了

金蝶云星空与聚水潭对接集成物料查询连通商品上传(新)(物料主数据同步策略)

金蝶云星空与聚水潭对接集成物料查询连通商品上传(新)(物料主数据同步策略)数据源系统:金蝶云星空金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践,面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司,提供一个通用的ERP服务平台。K/3Cloud支持的协同应用包括但不限于:集中/分散销售、

广告牌安全监测系统,用科技护航大型广告牌安全

城市的街头巷尾,处处可见高耸的广告牌,它们以各种形式和颜色吸引着行人的目光。然而,作为城市景观的一部分,广告牌的安全性常常被我们所忽视。广告牌量大面大,由于设计、材料、施工方法的缺陷,加上后期的检查、维护和不定期检测的关系,在天气环境影响下,就有可能造成脱落事故的发生。2023年8月6日,福建一重达7吨的牌坊发生坠落,

【PyTorch攻略(1/7)】 张量基本语法

一、说明Tensor是一种特殊的数据结构,与数组和矩阵非常相似。在PyTorch中,我们使用张量对模型的输入和输出以及模型的参数进行编码。张量类似于NumPy和ndarray,除了张量可以在GPU或其他硬件加速器上运行。事实上,张量和NumPy数组通常可以共享相同的底层内存地址,具有称为桥接到np标签的功能,这消除了复

VR全景展示的功能有哪些?你了解多少?

VR全景展示作为一种全新的视觉体验技术,能够为人们带来强烈的视觉效果以及沉浸式的观感,在旅游、房地产、车展、博物馆等都有着十分广泛的应用。这种富媒体技术,具有很好的交互性和沉浸感,能够带给大家更好的体验,那么VR全景展示的功能有哪些呢?1、沉浸式交互体验VR全景展示为观众提供了更加真实、更加具有沉浸式的体验,以720°

技术贴 | 深度解析 PostgreSQL Protocol v3.0(二)— 扩展查询

引言PostgreSQL使用基于消息的协议在前端(客户端)和后端(服务器)之间进行通信。该协议通过TCP/IP和Unix域套接字支持。《深度解析PostgreSQLProtocolv3.0》系列技术贴,将带大家深度了解PostgreSQLProtocolv3.0(在PostgreSQL7.4及更高版本中实现,有关早期协

Greenplum实用工具-gpfdist

注:本文翻译自https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/utility_guide-ref-gpfdist.html向Greenplum数据库段提供数据文件或从数据库段写入数据文件。语法gpfdist[-d<directory>][

爬虫 — 字体反爬

目录一、安装字体软件FontCreator二、百度智能云文字识别三、案例一四、案例二五、案例三六、安装Tesseract1、安装步骤2、配置环境3、使用Python识别图片信息七、案例四一、安装字体软件FontCreator点击下载字体软件FontCreator安装包1、同意协议,点击Next;2、更改存放位置,点击N

CPP-Templates-2nd--第十九章 萃取的实现 19.7---

目录19.7其它的萃取技术19.7.1If-Then-Else19.7.2探测不抛出异常的操作19.7.3萃取的便捷性(TraitsConvenience)别名模板和萃取(AliasTemplatesAndTraits)变量模板和萃取(VariableTemplatesandTraits)19.8类型分类(TypeCl

热文推荐