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

125. 验证回文串【 力扣(LeetCode) 】

一、题目描述

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

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

  给你一个字符串 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. 基本思路:
      头指针+尾指针,一直判断是否相等,直到两指针相遇或者字符不相等停止
  2. 具体思路:
    • 预处理:定义 trim(string& s) 函数,功能是删除非字母或数字的字符,并且字符转小写。使用双指针实现,i 指针用于保存字符,j 指针用于遍历,遇到要保持的就赋值给 i 指针,最后删除多余字符。
    • 双指针遍历:先使用 trim 函数处理字符串;因为回文串中心对称,所以我们从两端开始一直判断是否相同。定义头指针 i 和尾指针 j ,初始化为 0n-1 。判断两指针所指字符是否相同,相同就继续判断下一个,i++j-- 。不同则表示不是回文串,返回 false 。直到两指针相遇都相同,则表示是回文串,返回 true

四、参考代码

时间复杂度: O ( n ) \Omicron(n) O(n)
空间复杂度: O ( 1 ) \Omicron(1) O(1)

class Solution {
public:void trim(string& s) {int n = s.length();int i = 0, j = 0;while (j < n) {s[j] = tolower(s[j]);if (isalnum(s[j])) {s[i++] = s[j++];} else {j++;}}s.erase(i, n - i);}bool isPalindrome(string s) {trim(s);int n = s.length();for (int i = 0, j = n - 1; i < j; i++, j--) {if (s[i] != s[j]) {return false;}}return true;}
};
http://www.lryc.cn/news/423045.html

相关文章:

  • 3年经验,面试测试岗20k都拿不到了吗?
  • 【ML】强化学习(Reinforcement Learning)及其拆解
  • 在宝塔面板下安装WordPress
  • 纷享销客CRM AI产品架构概览、产品特色
  • 【文件IO】文件系统操作
  • Spring Cloud Alibaba 集成分布式定时任务调度功能
  • 中职云计算实训室
  • 【python制作一个小程序作为七夕礼物】
  • 一篇文章教会你如何使用Haproxy,内含大量实战案例
  • PythonStudio 控件使用常用方式(二十二)TFlowPanel
  • 培训第二十七天(lvs_nat模式与lvs_dr模式配置)
  • JAVA中DateFormat详解
  • uniapp——列表选择样式
  • 解决客户访问超时1s问题
  • Linux命令(基础面试可用,都是自己觉得平时使用多的)
  • opencv-python图像增强一:传统图像去噪方法整理
  • Canal单机部署
  • java,每日练习02
  • C# TreeView
  • 通过xshell使用密钥连接阿里云服务器
  • <数据集>路面坑洼识别数据集<目标检测>
  • 几个常用脚本
  • gtest中TEST和TEST_F和TEST_P的区别是什么
  • VS2022如何调出输出窗口,并在输出窗口打印日志
  • 【全国大学生电子设计竞赛】2021年I题
  • 【项目】基于Vue2+Router+Vant 前端面经项目
  • 【论文阅读】YOLOv10: Real-Time End-to-End Object Detection
  • 计算资源消耗
  • 企业微信推送消息的Java实现教程
  • 强化学习之Actor-Critic算法(基于值函数和策略的结合)——以CartPole环境为例