题目
初见思路
344.反转字符串
很简单的一道题,使用双指针,用一个temp来保存交换一下两边的值就行了。
541. 反转字符串II
和上一道差不多,一开始写的时候没有注意不满K的要全部交换。
剑指Offer 05.替换空格
直接看了解析,使用双指针。
151.翻转字符串里的单词
这道题要是能想到思路就还好。
剑指Offer58-II.左旋转字符串
能想到用一个额外的string来保存n个char,然后resize原本的string,最后再把字符加到后面。
更新思路
344.反转字符串
c++中也可以用swap函数来进行交换。
541. 反转字符串II
不满K 的部分要全部交换, for(int i = 0; i < s.size(); i += (2 * k))
for loop的话用这样的形式好一些,善用对于i的增加。
剑指Offer 05.替换空格
双指针从后往前,记录老string长度,和扩容后的string长度。
151.翻转字符串里的单词
分为三步,第一步移除多余的空格,第二部反转整个string,第三步反转单个单词。移除空格和之前的移除元素一样,使用快慢指针 if (slow != 0) s[slow++] = ' '; // slow往前面进一格
。 反转也和之前一样,反转单词时用空格来判断其实和结束点。
剑指Offer58-II.左旋转字符串
用和151相同的套路,这次先反转0-n-1的字符,再反转n-s.size()-1,最后反转一下整个string,就可得到最后结果了。
今日总结
学习时长
收获
善用对于i的增加,