代码随想录算法训练营第八天|344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 51.翻转字符串里的单词 剑指Offer58-II.左旋转字符串

344.反转字符串

题目链接:https://leetcode.cn/problems/reverse-string/
思路:

  1. 首先想到reverse函数,如 reverse(a.begin(), a.end());
  2. 会想到双指针,两个指针分别位于首位,一一移动反转
    在这里插入图片描述
    小结:一开始while()里面的条件写成leftIndex!=rightIndex,没有想到在字符串里面的元素个数为偶数时,两者不会相遇。

541. 反转字符串II

题目链接:https://leetcode.cn/problems/reverse-string-ii/
思路:每次i会移动2k
在这里插入图片描述
小结:

  1. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符得出s.size()-1-i=1>=k得出i+k<=s.size();
  2. 函数定义为字符串,最后要返回字符串,上一题函数定义为void ,不需要返回。

剑指Offer 05.替换空格

题目链接:https://leetcode.cn/problems/ti-huan-kong-ge-lcof/
在这里插入图片描述
小结:注意数组从后往前扩充,避免从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动的问题。
很多数组填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。

151.翻转字符串里的单词

题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/
整体反转+局部反转
解题思路如下:
移除多余空格(字符串最前面的空格,字符串最后面的空格,字符串中间多余的空格)使用双指针法来去移除空格,最后resize(重新设置)一下字符串的大小,这部分和27.移除元素 (opens new window)的逻辑是一样的
将整个字符串反转
将每个单词反转
在这里插入图片描述

在这里插入图片描述

剑指Offer58-II.左旋转字符串

题目链接:https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
整体反转+局部反转

具体步骤为:
反转区间为前n的子串
反转区间为n到末尾的子串
反转整个字符串

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值