344.反转字符串
题目链接:https://leetcode.cn/problems/reverse-string/
思路:
- 首先想到reverse函数,如 reverse(a.begin(), a.end());
- 会想到双指针,两个指针分别位于首位,一一移动反转
小结:一开始while()里面的条件写成leftIndex!=rightIndex,没有想到在字符串里面的元素个数为偶数时,两者不会相遇。
541. 反转字符串II
题目链接:https://leetcode.cn/problems/reverse-string-ii/
思路:每次i会移动2k
小结:
- 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符得出s.size()-1-i=1>=k得出i+k<=s.size();
- 函数定义为字符串,最后要返回字符串,上一题函数定义为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到末尾的子串
反转整个字符串