【力扣】125.验证回文串

news2025/2/25 5:46:12

刷题,过了真的好有成就感!!!

题解:

根据题目要求,我们需要处理一下几个问题:

  • 将大写字母转变成小写
  • 对原来的字符串进行处理,只要字母和数字
  • 考虑只有一个和字符串为空的情况

1、将大写转变成小写可以用C++函数库中的tolower()函数

2、第2和第3看代码即可

代码:

class Solution {
public:
    bool isPalindrome(string s) {
        //s1为经过处理后的字符串:字母数字
        string s1;
        int len = s.length();
        //将大写字母变成小写字母
        for(int i = 0; i < len; i ++)
        {
            if(s[i] >= 'A' && s[i] <= 'Z')
            {
                s[i] = tolower(s[i]);
            }
        }
        //将其他的字符去除,同时生成新的字符串
        for(int i = 0; i < len; i++)
        {
            if(s[i]>='a'&&s[i]<='z'||s[i]>='0'&&s[i]<='9')
            {
                s1.push_back(s[i]);
            }
        }
        int len2=s1.length();
        //当原本的字符串只有一个以及经过处理后的s1为空时,返回true
        if(s1==""||len2==1) return true;
        int count=0;
        for(int i=0; i<len2/2; i++)
        {
            int m=len2-i-1;
            count=(s1[i]==s1[m])?1:0;
            if(count==0) return false;
        }
        if(count==1)
        {
            return true;
        }
        return false;
        }
};

改进:

当我从官方题解那逛一圈回来后,有点懵,还有点裂开。

借用C++库中的两个函数即可完成

  1. isalnum():用于判断字符是否是数字和字符
  2. tolower(a)将字符a转变成小写即可(转变成大写为toupper)

在用tolower(a)转变成小写时,如果该字符是数字那没啥影响,简洁款代码如下:

class Solution {
public:
    bool isPalindrome(string s) {
        string s1;
        for(char c:s){
            if(isalnum(c)){
                s1+=tolower(c);
            }
        }
        string s2(s1.rbegin(),s1.rend());
        return s1==s2;
    }
};

翻转也可以用reverse(s.begin,s.end);里面就已经改变了,不需要用其他的对其进行接收,这样也行的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1585796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx 基础应用实战 06 构建一个PHP的站点

Nginx 基础应用实战 06 构建一个PHP的站点 使用套件 lmnp https://oneinstack.com 安装完成后 搭建bbs https://www.discuz.net/ 搭建博客 https://wordpress.com https://cn.wordpress.org/ CMS系统 http://www.dedecms.com/ 构建Lua站点 Openresty Nginx Lua …

lomobok源码编译学习笔记(1)

lomobok学习笔记&#xff08;1&#xff09; 项目导入 lombok的github地址 GitHub - projectlombok/lombok: Very spicy additions to the Java programming language. 开发工具 idea不知道为啥&#xff0c;装上ant工具也不好用&#xff0c;eclipse默认自带有ant,不需要装。…

0 idea搭建springboot项目

1 2 3 4 5 配置文件 application.yaml server:servlet:context-path: /app #项目名controller //注入到spring容器 Controller public class HelloController {GetMapping("hello")ResponseBodypublic String hello(){return "Hello,SpringBoot";} }启…

多态——C++

这里写目录标题 衔接继承总结继承和组合白箱复用黑箱复用 多态的概念多态的定义以及实现虚函数重写的两个例外协变面试题析构函数的重写 finalvoerride重载隐藏(重定义)重写(覆盖)抽象类什么是抽象类&#xff1f; 实现继承和接口继承多态的原理虚函数表 那多态的调用是怎么实现…

我为什么选择当程序员

在当今这个数字化时代&#xff0c;程序员已经成为了一个非常受欢迎的职业选择。无论是出于对技术的热爱&#xff0c;还是因为看到了这个行业的广阔前景&#xff0c;越来越多的人选择加入程序员的行列&#xff0c;尤其是最近几年AI带动整体行业的发展。本文将深入探讨人们选择成…

giteegit的连结使用

目标&#xff1a;在windows的本地的git上操作的项目存放到Gitee云端上 不适用于linux的terminal终端下 1.先下载好Git这个软件 2.创建一个文件夹&#xff08;项目名称&#xff09; 然后用gitbash的形式打开 3.创建ssh密钥到Gitee上 因为我们在Git与Gitee上的传输是通过ssh…

用友NC open SQL注入漏洞复现(XVE-2023-29119)

0x01 产品简介 用友NC是由用友公司开发的一套面向大型企业和集团型企业的管理软件产品系列。这一系列产品基于全球最新的互联网技术、云计算技术和移动应用技术,旨在帮助企业创新管理模式、引领商业变革。 0x02 漏洞概述 用友NC /portal/pt/PaWfm/open接口的proDefPK参数存…

蓝桥杯物联网竞赛_STM32L071KBU6_全部工程及国赛省赛真题及代码

包含stm32L071kbu6全部实验工程、源码、原理图、官方提供参考代码及国、省赛真题及代码 链接&#xff1a;https://pan.baidu.com/s/1pXnsMHE0t4RLCeluFhFpAg?pwdq497 提取码&#xff1a;q497

基于Web的毕业生离校离校管理系统的设计与实现(源码+配套文档)

基于Web的毕业生离校离校管理系统的设计与实现&#xff08;源码配套文档&#xff09; 摘要 越来越多信息化融入到我们生活当中的同时&#xff0c;也在改变着我们的生活和学习方式&#xff0c;当然&#xff0c;变化最明显的除了我们普通民众之外&#xff0c;要数高校学生的生活…

【热门话题】OneFlow深度学习框架介绍

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 OneFlow深度学习框架介绍引言一、OneFlow概述1.1 定位与起源1.2 核心特性数据流…

大屏可视化展示平台解决方案(word原件获取)

1.系统概述 1.1.需求分析 1.2.重难点分析 1.3.重难点解决措施 2.系统架构设计 2.1.系统架构图 2.2.关键技术 2.3.接口及要求 3.系统功能设计 3.1.功能清单列表 3.2.数据源管理 3.3.数据集管理 3.4.视图管理 3.5.仪表盘管理 3.6.移动端设计 3.1.系统权限设计 3.2.数据查询过程设…

ios苹果ipa文件app内测分发有哪些操作流程

哈喽&#xff0c;大家好&#xff0c;咕噜淼淼又来和大家见面啦&#xff0c;在iOS应用开发过程中&#xff0c;进行内测分发是非常重要的一环&#xff0c;它能帮助开发者发现并修复应用中的问题&#xff0c;提升用户体验。上两期咱们一起探讨了一下App内测分发的目的及优势&#…

Linux云计算之Linux基础3——Linux系统基础part-2

1、终端、shell、文件理论 1、终端 终端(terminal)&#xff1a;人和系统交互的必要设备&#xff0c;人机交互最后一个界面&#xff08;包含独立的输入输出设备&#xff09; 物理终端(console)&#xff1a;直接接入本机器的键盘设备和显示器虚拟终端(tty)&#xff1a;通过软件…

20231125 1+X 中级实操考试(id:3777)

//补充完成该类的含参构造方法public Info(String name, int age, String sex, String phone) {this.name name;this.age age;this.sex sex;this.phone phone;} // 请修改该方法&#xff0c;以保证打印对象时输出格式如下&#xff1a;// [namezs;age20;sex男;phone18812349…

错误日志:解决在VScode中调试C++代码断点无效、断点错位的问题

问题可能原因有&#xff1a; 调试时断点无效&#xff0c;大概率是 CMakeLists.txt 设置成了 Release 模式&#xff1b;如果在 CMakeLists.txt 在设置成 Debug 以后&#xff0c;调试时能够停下来&#xff0c;但没在断点处停下&#xff0c;而是停在了别的地方&#xff0c;这就是…

实现iframe里面的页面全屏

首先在父页面引入iframe 监听iframe的方法回调 实现iframe全屏的方法 在iframe页面中&#xff0c;点击全屏后&#xff0c;执行回调函数 就能实现iframe中页面全屏了

你知道 Java 线程池的原理吗?

Java线程池是用于管理和复用线程的机制&#xff0c;它可以帮助开发者有效地管理线程的生命周期和资源&#xff0c;并提高应用程序的性能和稳定性。 1. 线程池概述 在计算机科学中&#xff0c;线程池是一种可用来执行异步任务的线程队列。它主要包含以下几个组成部分&#xff…

Springboot实现链路追踪功能

前言 在日常开发中&#xff0c;一个业务的实现往往会调用很多个方法&#xff0c;当我们去看日志的时候&#xff0c;各种接口的日志打印出来&#xff0c;看着就头疼&#xff0c;压根没办法去定位&#xff0c;而链路追踪就能很好的帮助我们去查看接口从头至尾依次调用了哪些方法…

CSS导读 (元素显示模式)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 三、CSS的元素显示模式 3.1 什么是元素显示模式 3.2 块元素 3.3 行内元素 3.4 行内块元素 3.5 元素…

ssm“健康早知道”微信小程序

采用技术 ssm“健康早知道”微信小程序的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 需求分析 利用ssm、Java、MyEclipse和mysql数据库等知识点&#xff0c;结合相关设…