力扣:125. 验证回文串

力扣:125. 验证回文串

描述

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

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

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

提示:

1 <= s.length <= 2 * 105
s 仅由可打印的 ASCII 字符组成

1.双指针

1.遍历整个字符串

2.遇到空格,left++ 或者 right–

3.转换为小写后比较是否相等,出现不等的情况return
代码:

#include<iostream>
using namespace std;
class Solution{
public:	bool isPalindrome(string s) {if(s.size() <= 1){return true;}int left = 0, right = s.size() - 1;while(left < right){while(left < right && !isalnum(s[left])){left++;}while(left < right && !isalnum(s[right])){right--;}if(tolower(s[left++]) != tolower(s[right--]))return false;}return true;}
};
int main()
{Solution solution;string str = "A man, a plan, a canal: Panama";if(solution.isPalindrome(str)){cout << str << " is isPalindrome" << endl;}else {cout << str << " is not palindrome" << endl;}return 0;
}

在这里插入图片描述

2.筛选 + 判断

最简单的方法是对字符串 sss 进行一次遍历,并将其中的字母和数字字符进行保留,放在另一个字符串 sgood\textit{sgood}sgood 中。这样我们只需要判断 sgood\textit{sgood}sgood 是否是一个普通的回文串即可。

判断的方法有两种。第一种是使用语言中的字符串翻转 API 得到 sgood\textit{sgood}sgood 的逆序字符串 sgood_rev\textit{sgood_rev}sgood_rev,只要这两个字符串相同,那么 sgood\textit{sgood}sgood 就是回文串。

#include<iostream>
using namespace std;
class Solution{
public:bool isPalindrome(string s){string sgood;for(char ch:s){if(isalnum(ch)){sgood += tolower(ch);}}string sgood_rev(sgood.rbegin(),sgood.rend());return sgood == sgood_rev;}
};int main()
{Solution solution;string str = "A man, a plan, a canal: Panama";if(solution.isPalindrome(str)){cout << str << " is palindrome" << endl;}else{cout << str << " is not palindroem" << endl;}return 0;
}

在这里插入图片描述
力扣:125. 验证回文串

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

useState多次渲染页面卡顿 useMemo

useState多次渲染页面卡顿 state变化了组件自然应该重新进行渲染&#xff0c;但有时我们并不需要。 React.memo()(useMemo)是一个高阶组件&#xff0c;它接收另一个组件作为参数&#xff0c;并且会返回一个包装过的新组件&#xff0c;包装过的新组件就会具有缓存作用&#xff…

淘金优化算法GRO求解不闭合SD-MTSP,可以修改旅行商个数及起点(提供MATLAB代码)

一、淘金优化算法GRO 淘金优化算法&#xff08;Gold rush optimizer&#xff0c;GRO&#xff09;由Kamran Zolf于2023年提出&#xff0c;其灵感来自淘金热&#xff0c;模拟淘金者进行黄金勘探行为。淘金优化算法&#xff08;Gold rush optimizer&#xff0c;GRO&#xff09;提…

基于JavaWeb实现的药店管理系统

一、系统架构 前端&#xff1a;jsp | layui | jquery | css 后端&#xff1a;spring | springmvn | mybatis 环境&#xff1a;jdk1.8 | mysql 二、代码及数据库 三、功能介绍 01. 登录 02. 首页 03. 药品管理 04. 销售管理-销售记录管理 05. 销售管理-退…

使用Fabric创建的canvas画布背景图片,自适应画布宽高

之前的文章写过vue2使用fabric实现简单画图demo&#xff0c;完成批阅功能&#xff1b;但是功能不完善&#xff0c;对于很大的图片就只能显示一部分出来&#xff0c;不符合我们的需求。这就需要改进&#xff0c;对我们设置的背景图进行自适应。 有问题的canvas画布背景 修改后的…

swift 长按桌面图标弹出快捷选项

文章目录 一、3D Touch二、主屏交互1. 静态添加2. 动态添加三、监听主屏交互按钮的点击事件四、预览和跳转1. 注册3D touch2. 实现协议3. 在目标控制器复写previewActionItems4. 使用UIContextMenuConfiguration一、3D Touch 3D Touch通过屏幕下方的压力感应器来感知不同的压力…

【ArcGIS】渔网分割提取栅格图+网格化分析图绘制

ArcGIS按渔网分割提取栅格图并绘制网格化分析图 准备数据操作步骤步骤1&#xff1a;创建渔网&#xff08;Create Fishnet&#xff09;步骤2&#xff1a;栅格数据处理步骤3&#xff1a;栅格插值步骤4&#xff1a;数据关联 参考 网格化的目的是让各个数据更加标准化的进行统计。因…

基础内容哦!!!吴恩达deeplearning.ai:利用计算图求导(反向传播)

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai专栏 文章目录 一个小型神经网络的例子利用计算图逐步计算价值函数J利用计算图求出价值函数的导数 计算图是深度学习中的一个关键概念&#xff0c;它也是Tensorflow等编程框架自动计算神经网络导…

使用SSH推拉Github代码

快速使用 ssh-keygen -t rsa -b 4096 -C "your_emailexample.com 创建ssh密钥&#xff08;一直回车&#xff0c;不要指定目录&#xff0c;不要设置密码&#xff09;将生成的 ~/id_ras.pub 中的内容复制到Github对应位置即可 1.SSH简介 SSH&#xff08;Secure Shell&…

Java学习笔记------接口

接口 接口就是一种规则,对行为的抽象 定义和使用接口 用关键字interface来定义&#xff0c;public interface 接口名{} 接口不能实例化 接口和类之间是实现关系&#xff0c;通过impls关键字表示 public class 类名 implements 接口名{} 接口的子类&#xff08;实现类&am…

【C++】AVL树详解

目录 一、AVL树的概念 二、AVL树节点的定义 三、AVL树的操作 3.1 AVL树的平衡因子 3.2 AVL树的插入 3.3 AVL树的旋转 3.4 AVL树的验证 四、AVL树的完整代码 上一篇已经对关联式容器set/map/multiset/multimap进行了简答的介绍&#xff0c;大家可能发现它们有一个共同点&…

js滚动table动画

requestAnimationFrame()告诉浏览器你希望执行一个动画&#xff0c;&#xff0c;并且要求浏览器在下次重绘之前调用指定的回调&#xff0c;&#xff0c;更新动画。。。 请求动画帧&#xff0c;&#xff0c;也称帧循环&#xff0c;&#xff0c;&#xff0c; 改api能以浏览器的显…

基于ssm旅社客房收费管理系统+vue

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…