代码随想录算法训练营第九天 字符串总结 | 双指针回顾
一刷中,暂时跳过KMP,今天状态也不太好,简单了解了一下,后面来补上。今天先整理一下字符串和双指针。
字符串
除去目前没有掌握的KMP,字符串类的题目除了各种反转类型外,还有需要扩充字符串大小的题目。目前做过的题目基本集中在第八天的内容里:
- [[day8#字符串 lc344 反转字符串]]
- [[day8#字符串 lc541 反转字符串II]]
- [[day8#双指针 lc剑指Offer 05. 替换空格]]
- [[day8#双指针 lc151 反转字符串中的单词]]
- [[day8#lc剑指Offer 58. 左旋转字符串]]
前面两题反转字符串基本上是对题目进行简单模拟即可,尽可能在空间复杂度为
替换空格这道题目需要先扩充字符串长度,因为"%20"
所占的字符数是" "
的三倍。根据空格数目扩充长度之后,再从后向前使用双指针进行字符串更新的操作,从后向前可以避免插入单个字符时,其后面所有字符都要向后移动。
反转字符串中的单词与左旋转字符串都是思路题,基本上使用之前题目的一些思路都可以想出来,头脑要灵活一点。
双指针
目前感觉很多题目都应用到了双指针,数组,链表,字符串中都有遇到双指针
- [[day 1#移除元素]]
- [[day2#双指针 lc977 有序数组的平方]]
- [[day3#双指针、递归 lc206 反转链表]]
- [[day4#链表操作 lc19 删除链表倒数第N个节点]]
- [[day4#环形列表 lc142 环形列表II]]
- [[day7#双指针 lc15 三数之和]]
- [[day7#双指针 lc18 四数之和]]
- [[day8#双指针 lc剑指Offer 05. 替换空格]]
- [[day8#双指针 lc151 反转字符串中的单词]]
双指针本身并不难理解,可以是一个快指针一个慢指针,也可以是一个左指针,一个右指针。双指针的目的应该是减少遍历层数,把两层循环变成一层。
本文作者:冰镇杨梅
本文链接:https://www.cnblogs.com/frozenwaxberry/p/17062326.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步