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

题目

初见思路

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的增加,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值