news 2026/7/27 3:16:04

刷题练习心法之双指针

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
刷题练习心法之双指针

Q1题目链接:https://leetcode.com/problems/valid-palindrome-ii/

leetcode 680

看到题目的第一思路:

和之前做的125题类似 都是用双指针方法判断字符串是否回文

但是解题思路略有差异

代码随想录之后的想法和总结:

正确的解题思路:

第一步:正常双指针往中间走

如果:s[left] == s[right] 那就很简单:

left++
right--

继续。

第二步:什么时候才动用“删除一次”的机会?

只有在:s[left] != s[right]

的时候。

这时你不能随便继续走,也不能直接 false。

你要问:如果删掉左边这个字符,剩下的是不是回文?
或者如果删掉右边这个字符,剩下的是不是回文?

第三步:为什么要分成两种尝试?

因为你第一次不匹配时,不知道问题出在:

  • 左边这个字符多余

  • 还是右边这个字符多余

例如:abca

当走到bc时不相等,
你要分别想:

  • 跳过b,看"aca"是不是回文

  • 跳过c,看"aba"是不是回文

只要有一种成立,就返回true

时间复杂度以及空间复杂度:

时间复杂度:O(n)

原因:

  • 主循环走一遍

  • 最多调用一次子函数(也是 O(n))


Q2题目链接:https://leetcode.com/problems/reverse-string/

leetcode #344

看到题目的第一思路:

双指针

代码随想录之后的想法和总结:

注意原地交换:

交换的关键永远是:先保存一边的旧值

通常保存左边更自然:

temp = 左边 左边 = 右边 右边 = temp

时间复杂度以及空间复杂度:


Q3题目链接:https://leetcode.com/problems/reverse-words-in-a-string/

leetcode #151

看到题目的第一思路:

这个问题虽然也是用双指针,但是不是之前的题目那样的左右夹击双指针,

反而是一种同向 / 扫描双指针

大概思路:从右往左扫描字符串,每次找到一个完整单词,按找到的顺序拼到结果里。

代码随想录之后的想法和总结:

难点:

1怎么跳过多余空格

2怎么确定一个单词的左右边界

比如从右往左扫描时,遇到d开始,怎么知道world整个单词在哪里结束、从哪里开始?

这就会用到“指针移动”。需要用双指针来记录两个位置:

比如:i:用来扫描,当找到单词尾部时,记一个j

思路像这样:

i 从右往左走 先跳过空格 如果 i < 0,结束 j = i // j 先记住当前单词末尾 然后继续往左走,直到遇到空格 这时单词范围就是 [i+1 ... j]

这个区间就是一个完整单词。

完整的解题思路:

  • 从右往左扫描

  • 跳过空格

  • 记录单词结尾j

  • 往左找到单词开头

  • substring(i+1, j+1)取出单词

  • StringBuilder拼结果

  • 中间只加一个空格

时间复杂度以及空间复杂度:


今日收获,学习时长:

第一题:

注意这里用到了两个双指针循环

因此:观察一下他们的区别:

主循环:允许犯一次错误(可以删一个字符)
子循环:不允许犯错(必须严格回文)

逻辑是否允许出错行为
主循环✅ 允许一次不等 → 尝试删除
子循环❌ 不允许不等 → 直接 false

第二题:数据类型不同 语法不同 为什么会混乱?

因为你做的题:

  • 125 / 680 →String

  • 344 →char[]

👉逻辑一样(双指针)
👉但数据类型不同 → 访问方式不同

判断方法(考试/面试用)

你只需要看函数参数:

👉 如果是这样:

public boolean isPalindrome(String s) ✔ 用:s.charAt(i)

👉 如果是这样:

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

短剧广告防作弊系统:有效过滤假量、保障广告主与创作者收益

短剧广告变现规模越来越大&#xff0c;刷量、机刷、模拟器、群控、虚假点击等作弊行为也日益猖獗。假量不仅拉低 ECPM、浪费广告预算&#xff0c;更让真实流量主、内容创作者被误伤、收益受损&#xff0c;甚至导致广告主撤量、平台风控关停。一套专业、强硬的短剧广告防作弊系统…

作者头像 李华
网站建设 2026/7/23 16:41:57

通义千问1.5-1.8B-Chat-GPTQ-Int4对话流畅度与逻辑性深度评测报告

通义千问1.5-1.8B-Chat-GPTQ-Int4对话流畅度与逻辑性深度评测报告 最近&#xff0c;一个只有18亿参数的小模型——通义千问1.5-1.8B-Chat-GPTQ-Int4&#xff0c;在社区里引起了不少讨论。大家好奇的是&#xff0c;一个经过量化压缩后的小模型&#xff0c;在真实的对话场景下&a…

作者头像 李华
网站建设 2026/7/14 14:36:45

命题逻辑中的对偶原理:为什么它与德摩根律如此相似?

命题逻辑中的对偶原理&#xff1a;为什么它与德摩根律如此相似&#xff1f; 在数理逻辑的迷宫中&#xff0c;对偶原理与德摩根律如同两枚相互映照的棱镜&#xff0c;折射出命题逻辑的深层对称性。这种相似性绝非偶然——当我们将真值表翻转、将联结词置换时&#xff0c;隐藏在形…

作者头像 李华
网站建设 2026/7/14 14:36:55

CKEditor网页编辑器如何保留Word文档中的原始图片和格式?

企业网站Word粘贴与导入功能开发全记录 需求分析 作为广西某软件公司的前端工程师&#xff0c;我最近接手了一个企业网站后台管理系统的功能增强需求。客户希望通过集成Web编辑器插件实现以下核心功能&#xff1a; Word粘贴功能&#xff1a;直接从Word复制内容并粘贴到网站编…

作者头像 李华
网站建设 2026/7/14 14:36:54

ChatGPT API 购买与接入实战指南:从注册到生产环境部署

ChatGPT API 购买与接入实战指南&#xff1a;从注册到生产环境部署 对于许多开发者而言&#xff0c;第一次接触 ChatGPT API 时&#xff0c;往往会感到无从下手。账号怎么注册&#xff1f;该选哪个套餐&#xff1f;API Key 拿到后怎么用代码调用&#xff1f;调用失败了怎么办&…

作者头像 李华