代码随想录算法训练营第八天 344. 反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串。
代码随想录算法训练营第八天| 344. 反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串。
344. 反转字符串
题目链接:力扣题目链接
文章讲解:代码随想录(programmercarl.com)
视频讲解:字符串基础操作! | LeetCode:344.反转字符串
状态:AC
思路
相同颜色的互换位置即可,即i
与len(s) - 1 - i
交换。i
的范围到len(s)/2
代码
1 |
|
541. 反转字符串II
题目链接:力扣题目链接
文章讲解:代码随想录(programmercarl.com)
视频讲解:字符串操作进阶! | LeetCode:541. 反转字符串II
状态:AC
思路
- 如图,图中相同颜色的部分代表一个
2k
段,循环条件:for i := 0; i < len(s); i += 2 * k
。 - 相同颜色下,分为两段,前
k
段和后k
段。前k
段进行反转,后k
段直接拼接。如果某一段到达了字符串s
尾部,需要停止。 - 由于Go语言的字符串不可变,所以新建一个变量,一点点“组装”成最终结果。前
k
段翻转直接进行反向遍历。
代码
1 |
|
剑指Offer 05.替换空格、LCR22.路径加密
题目链接:力扣题目链接
文章讲解:代码随想录(programmercarl.com)
状态:AC
思路
直接投机取巧,新建一个字符串newString
,遍历字符串s
,如果s[i] == '.'
,在newString += ' '
,否则newString += s[i]
代码
1 |
|
151.翻转字符串里的单词
题目链接:力扣题目链接
文章讲解:代码随想录(programmercarl.com)
视频链接:字符串复杂操作拿捏了! | LeetCode:151.翻转字符串里的单词
状态:AC
思路
- 使用双指针,
left
指针指向的是单词的起始位置,遍历字符串用的i
找到单词末尾。 - 新建一个字符串数组
words
,将每个单词加入到其中 - 定义新字符串
newString
,将words
中每个单词拼接到newString
中(反向遍历words
),并且如果不是最后一个单词则再加一个空格。
代码
1 |
|
Offer58-II.左旋转字符串
题目链接:力扣题目链接
文章讲解:代码随想录(programmercarl.com)
状态:AC
思路
方法一
直接拼接
方法二
代码
1 |
|
1 |
|
代码随想录算法训练营第八天 344. 反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串。
https://promisewang.github.io/post/6416b651.html