首页 > 编程语言 >代码随想录算法训练营第九天 字符串总结 | 双指针回顾

代码随想录算法训练营第九天 字符串总结 | 双指针回顾

时间:2023-01-20 00:00:57浏览次数:43  
标签:第九天 题目 day8 反转 训练营 随想录 链表 字符串 指针

一刷中,暂时跳过KMP,今天状态也不太好,简单了解了一下,后面来补上。今天先整理一下字符串和双指针。

字符串

除去目前没有掌握的KMP,字符串类的题目除了各种反转类型外,还有需要扩充字符串大小的题目。目前做过的题目基本集中在第八天的内容里:

  • [[day8#字符串 lc344 反转字符串]]
  • [[day8#字符串 lc541 反转字符串II]]
  • [[day8#双指针 lc剑指Offer 05. 替换空格]]
  • [[day8#双指针 lc151 反转字符串中的单词]]
  • [[day8#lc剑指Offer 58. 左旋转字符串]]

前面两题反转字符串基本上是对题目进行简单模拟即可,尽可能在空间复杂度为\(O(1)\)的方法实现。大致思路就是以想要交换的字符串中点为对称中心,对称交换。

替换空格这道题目需要先扩充字符串长度,因为"%20"所占的字符数是" "的三倍。根据空格数目扩充长度之后,再从后向前使用双指针进行字符串更新的操作,从后向前可以避免插入单个字符时,其后面所有字符都要向后移动。

反转字符串中的单词与左旋转字符串都是思路题,基本上使用之前题目的一些思路都可以想出来,头脑要灵活一点。

双指针

目前感觉很多题目都应用到了双指针,数组,链表,字符串中都有遇到双指针

  • [[day 1#移除元素]]
  • [[day2#双指针 lc977 有序数组的平方]]
  • [[day3#双指针、递归 lc206 反转链表]]
  • [[day4#链表操作 lc19 删除链表倒数第N个节点]]
  • [[day4#环形列表 lc142 环形列表II]]
  • [[day7#双指针 lc15 三数之和]]
  • [[day7#双指针 lc18 四数之和]]
  • [[day8#双指针 lc剑指Offer 05. 替换空格]]
  • [[day8#双指针 lc151 反转字符串中的单词]]

双指针本身并不难理解,可以是一个快指针一个慢指针,也可以是一个左指针,一个右指针。双指针的目的应该是减少遍历层数,把两层循环变成一层。

标签:第九天,题目,day8,反转,训练营,随想录,链表,字符串,指针
From: https://www.cnblogs.com/frozenwaxberry/p/17062326.html

相关文章