当前位置: 首页 > news >正文

【力扣】125.验证回文串

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

题解:

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

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

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为空时,返回trueif(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.lryc.cn/news/336737.html

相关文章:

  • Fantasy Map Creator 2
  • 什么是云原生
  • 为什么要“挺”鸿蒙?
  • 去掉el-date-picker弹窗默认回显当前月份的方法
  • 绝地求生:PUBG×杜卡迪联名上线!参与投稿评论赢取精美好礼
  • 10个大型语言模型(LLM)常见面试问题和答案解析
  • rollup 插件架构-驱动设计 PluginDriver
  • netty实现mqtt(IOT)
  • 基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示汉字的功能
  • Springboot+Redis:实现缓存 减少对数据库的压力
  • springboot组件的单例模式和分布式分析
  • Linux:zip命令介绍
  • 远程桌面无法连接怎么办?
  • HarmonyOS实战开发-拼图、如何实现获取图片,以及图片裁剪分割的功能。
  • 【LeetCode热题100】【二叉树】二叉树的最近公共祖先
  • 动态规划专练( 1049.最后一块石头的重量Ⅱ)
  • 2024年最佳WordPress插件
  • Docker 安装 RocketMQ
  • 计算机网络——交换机和路由器
  • Redis Pipelining 底层原理分析及实践
  • milvus各组件的结构体分析
  • vue2和vue3 全选
  • Java中的Set、List、Map的区别及主要实现类方法
  • gitignore:常用说明
  • HarmonyOS NEXT应用开发—在Native侧实现进度通知功能
  • 水利自动化控制系统平台介绍
  • flask后端+网页前端:基于 socket.io 的双向通信和服务器部署
  • 【Docker】解决 docker build 提示 `Wrong architecture ‘amd64‘`
  • 机器学习_XGBoost模型_用C++推理示例Demo
  • C语言 | Leetcode C语言题解之第21题合并两个有序链表