代码随想录Day8:344.反转字符串、 541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

1、反转字符串代码随想录 (programmercarl.com)

        1.双指针法的一个小应用,for循环的一个终止条件可以是i<size/2也可以是i<j。

2.反转字符串II:代码随想录 (programmercarl.com)

        1.本题要搞懂意思:是2k,2k的记数,直到最后剩下的字符串长度不足2k。

        2.reverse库函数反转的时候是左闭右开

        3.注意if的判断边界条件是<=,当拿不准的时候就举例子。

3.剑指Offer 05.替换空格:代码随想录 (programmercarl.com)

        1.其实很多数组填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。这么做有两个好处:

  1. 不用申请新数组。
  2. 从后向前填充元素,避免了从前先后填充元素要来的 每次添加元素都要将添加元素之后的所有元素向后移动。

        2.for循环的条件为何为j<i?因为相当于i一直在从后往前追j,每遇到一个空格j和i之间的距离就缩短两格,直到二者相遇,就结束循环。

        3、i= newsize-1而非newsize,j同理

        4.一定要记得最后i-=2,要不然就是错误。

 4.151.翻转字符串里的单词:代码随想录 (programmercarl.com)

        1.若想要删除连续出现相同字符串的情况(或有这种可能)则用while循环2

        2.学会用双指针法去除中间的空格。

        3.注意索引和size()的区别,索引从0开始,size从1开始

        在以上代码中,因为在填充完最后一个数组内容后,slow++,使得最后有内容的索引为slow-1,而size则是比最后一个索引大一个,为slow。

        4.要记住最后反转单词的操作,即用for循环和if在循环中筛选

        5.最后反转时,for中的条件为i<=而非<s.size()、||中的条件为i==s.size()而非size-1.因为reverse函数是左闭又开的,不包括最最右边的那一个元素,即反转的下标为i的前一个。 

        6.在removespace函数中,因为第二步处理之后就不会有两个空格连在一起的情况,所以最后一步(移除字符串尾部的空格)只需要考虑只有一个空格的情况。

        7.最后的判断条件为||而不是&&,不要写错了。

        刷题遇到的错误:6.7

        本题总结:主要是要掌握删除多余空格函数的写法。

5.剑指Offer58-II.左旋转字符串:代码随想录 (programmercarl.com)

        注意:
        1.reverse(start,end)函数中翻转的元素包括start但是不包括end。左闭右开。
        2.stl容器中。begin()是指向第一个元素的迭代器,而.end()返回的是最后一个元素再后面一位的迭代器。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值