题目: ● 344.反转字符串
题目链接/文章讲解/视频讲解:代码随想录
第一想法:这道题直接使用了双指针,进行反转;
题目:● 541. 反转字符串II
题目链接/文章讲解:代码随想录
看完代码随想录之后的想法:这道题,进行反转的时候,我们仅仅对于for进行操作就行,对i + k
进行判断,如果i + k < size 的时候,我们会发现我们需要对 i 到 i + k 进行反转,否则 我们需要对i 到 size 进行反转,每次在i 到 i + 2k处理完毕后,我们就需要i向后移动2k,来进行下一次的操作,直到i出界;当然,反转字符串的操作可以直接调用库函数,因为我们自己写的反转函数和库函数的功能一样,对于这种基本的函数,我们在熟悉掌握的时候直接可以进行调用;
题目:剑指Offer 05.替换空格
题目链接/文章讲解:代码随想录
看完代码随想录之后的想法:首先用count记录空格的数量,然后扩充数组的大小,扩充后的大小为原来的大小+2倍的空格的数量,然后利用双指针进行操作,left指针为原数组的尾部,right定于为新数组的尾部;然后进行操作,不遇到空格的时候直接把left的值赋值给righ的值;遇到空格的时候把%20一个一个的放到right上;直到遍历结束;
题目: ● 151.翻转字符串里的单词
题目链接/文章讲解/视频讲解:代码随想录
首先去掉首部的空格,和尾部的空格;然后在把单词之间空格数量大于一个的删除到只有一个;
然后在反转整个字符串,然后再反转每一个单词;
实现的困难:我们进行删除多余的空格的时候,我们不能够直接使用erase库函数,因为我们需要for遍历整个数组然后,进行erase,时间复杂度需要n方;因此我们需要使用双指针进行操作;
题目: ● 剑指Offer58-II.左旋转字
题目链接/文章讲解/视频讲解:代码随想录
先把左部分反转,然后把右部分反转,最后再把整个字符串进行翻转;
就可以实现目标;