news 2026/6/9 23:23:33

验证回文串,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/6/8 19:44:28

Python+uniapp微信小程序智慧党建活动中心系统设计与开发 三端_4xxx1rk3

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;已开发项目效果实现截图 同行可拿货,招校园代理 Pythonuniapp微信小程序智慧党建活动中心系统设计与开发 三端…

作者头像 李华
网站建设 2026/6/8 19:57:54

springboot-vue购物商城系统 论文vue_o9m4k

目录已开发项目效果实现截图开发技术介绍核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;已开发项目效果…

作者头像 李华
网站建设 2026/6/8 19:47:18

读人机沟通法则:理解数字世界的设计与形成05机器可以被测量

1. 遥测1.1. 小铃铛尖锐的叮当声让我们拥有某种低科技水平的感知能力&#xff0c;让我们知道有人在前台1.2. “遥测”(telemetry)这个词诞生于19世纪的法国&#xff0c;当时电信技术才刚出现1.2.1. 使用一种电子仪器将阿尔卑斯山最高峰勃朗峰的积雪深度传输到巴黎的过程1.2.2. …

作者头像 李华
网站建设 2026/6/9 13:47:27

Java计算机毕设之基于springBool+Vue美食分享平台的设计与实现基于SpringBoot + Vue的美食网站系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/9 0:51:09

敏捷咨询:从落地到深耕的全流程赋能之路

在数字化转型加速的今天&#xff0c;敏捷管理已成为企业突破效率瓶颈、快速响应市场的核心引擎。但多数企业在敏捷实践中常陷入“形似神离”的困境——流程照搬却水土不服&#xff0c;工具堆砌却收效甚微。专业的敏捷咨询并非简单的方法论灌输&#xff0c;而是贯穿诊断、设计、…

作者头像 李华
网站建设 2026/6/9 1:32:57

Java毕设项目推荐-基于springboot的实验室实验报告管理系统的设计与实现基于SpringBoot和Vue的实验报告管理系统的设计与实现【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华