news 2026/3/18 8:49:44

验证回文串,x的平方根(左右指针)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
验证回文串,x的平方根(左右指针)

这个题用暴力法会超时,使用左右指针。

首先考虑如果不允许删除字符,如何判断一个字符串是否是回文串。常见的做法是使用双指针。定义左右指针,初始时分别指向字符串的第一个字符和最后一个字符,每次判断左右指针指向的字符是否相同,如果不相同,则不是回文串;如果相同,则将左右指针都往中间移动一位,直到左右指针相遇,则字符串是回文串。

在允许最多删除一个字符的情况下,同样可以使用双指针,通过贪心实现。初始化两个指针 low 和 high 分别指向字符串的第一个字符和最后一个字符。每次判断两个指针指向的字符是否相同,如果相同,则更新指针,将 low 加 1,high 减 1,然后判断更新后的指针范围内的子串是否是回文字符串。如果两个指针指向的字符不同,则两个字符中必须有一个被删除,此时我们就分成两种情况:即删除左指针对应的字符,留下子串 s[low+1:high],或者删除右指针对应的字符,留下子串 s[low:high−1]。当这两个子串中至少有一个是回文串时,就说明原始字符串删除一个字符之后就以成为回文串。

class Solution { public: bool Isover(string& s,int left, int right){ while(left<right){ if(s[left]!=s[right]){ return false; } else{ left++; right--; } } return true; } bool validPalindrome(string s) { int left=0; int right=s.size()-1; while(left<right){ if(s[left]!=s[right]){ return Isover(s,left+1,right) || Isover(s,left,right-1); } else{ left++; right--; } } return true; } };

由于 x 平方根的整数部分 ans 是满足 k^2 ≤x 的最大 k 值,因此我们可以对 k 进行二分查找,从而得到答案。

二分查找的下界为 0,上界可以粗略地设定为 x。在二分查找的每一步中,我们只需要比较中间元素 mid 的平方与 x 的大小关系,并通过比较的结果调整上下界的范围。由于我们所有的运算都是整数运算,不会存在误差,因此在得到最终的答案 ans 后,也就不需要再去尝试 ans+1 了。

class Solution { public: int mySqrt(int x) { int left=0; int right=x; int ans=-1; while(left<=right){ int mid=left+(right-left)/2; if((long long) mid* mid>x) right=mid-1; else{ ans =mid; left=mid+1; } } return ans; } };

比较值得一说的地方就是两个数left+right存在超范围的可能,这里使用了一个技巧:

为了避免left + right直接相加导致整数溢出,使用left + (right - left) / 2来计算中点,这是二分查找的安全写法。(right - left)一定 ≤INT_MAX

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/13 4:02:36

ant design pro不安装第三方库,如何实现多标签页面(带源码)

在中后台管理系统开发场景中&#xff0c;动态标签页是提升用户操作体验的核心功能 —— 它模拟浏览器标签页交互逻辑&#xff0c;支持多页面并行操作、自由切换&#xff0c;还能保留用户的操作轨迹。本文将基于 React Umi&#xff08;umijs/max&#xff09; Ant Design 技术栈…

作者头像 李华
网站建设 2026/3/14 15:59:44

2025最新!研究生必备8个AI论文平台:开题报告与文献综述全测评

2025最新&#xff01;研究生必备8个AI论文平台&#xff1a;开题报告与文献综述全测评 2025年研究生必备AI论文平台测评&#xff1a;如何选择高效工具&#xff1f; 在科研日益数字化的今天&#xff0c;研究生群体对AI论文工具的需求愈发迫切。从开题报告到文献综述&#xff0c;从…

作者头像 李华
网站建设 2026/3/14 3:59:04

基于SpringBoot的图书管理系统的设计与实现毕业设计项目源码

项目简介 在图书馆数字化升级、借阅服务精细化需求下&#xff0c;传统图书管理存在 “借阅流程繁琐、库存盘点低效、读者画像缺失” 的痛点&#xff0c;基于 SpringBoot 构建的图书管理系统&#xff0c;适配读者、图书管理员、馆内运营人员等角色&#xff0c;实现图书借阅、馆藏…

作者头像 李华
网站建设 2026/3/18 4:00:54

2025最新!9款AI论文软件测评:本科生写论文必备神器

2025最新&#xff01;9款AI论文软件测评&#xff1a;本科生写论文必备神器 2025年AI论文工具测评&#xff1a;为何值得一看&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文写作工具逐渐成为高校学生&#xff0c;尤其是本科生撰写学术论文的重要辅助手段。然而&…

作者头像 李华
网站建设 2026/3/16 23:49:20

设备自适应采样率忽视能耗致续航降 后来结合功耗模型动态调优

&#x1f493; 博客主页&#xff1a;塔能物联运维的CSDN主页 目录 物联网运维&#xff1a;当咖啡机开始叛逆的第107天 一、监控系统&#xff1a;比恋爱脑还善变的设备状态 二、安全防护&#xff1a;与黑客的猫鼠游戏 三、数据处理&#xff1a;在信息洪流中找真相 四、运维自动化…

作者头像 李华