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

 344.反转字符串

题目链接/文章讲解/视频讲解: 代码随想录
        双指针,一个从前往后,一个从后往前,两指针指向的元素交换位置。

         时间复杂度 O(n),空间复杂度 O(1)。

541. 反转字符串II

题目链接/文章讲解/视频讲解: 代码随想录
        
        上一题的拓展。首先 for 循环,通过将 step 设置为 2*k 来圈定反转大范围,再将反转区间内的元素进行反转。
        时间复杂度 O(n),空间复杂度 O(n)。

 

剑指Offer 05.替换空格

题目链接/文章讲解:代码随想录

        如果在字符串能改变的语言中,可以通过双指针来节省额外空间。首先将字符串大小扩展到相应大小,前指针指向原字符串末尾,后指针指向扩展后的字符串末尾,从后向前填充,直到两指针相遇。但在 python 里,字符串无法更改,需要先将字符串转成列表进行操作,因此无法节省额外空间。

        就不如直接操作算了。

 

 

         时间复杂度 O(n),空间复杂度 O(1)。

 

151.翻转字符串里的单词 

题目链接/文章讲解/视频讲解:代码随想录

        Python 就没啥好说的,还是因为不能改变字符串所以无法节约额外空间,因此就直接操作。若字符串可改变,可以先将整个字符串反转,再反转每个单词使单词恢复正向顺序,从而节省额外空间。

         时间复杂度 O(n),空间复杂度 O(n)。

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

题目链接/文章讲解:代码随想录

        如果字符串可以改的话,先反转前 n 个元素,再反转 n 后的元素,最后反转整个字符串,实现不使用额外空间进行反转。但 Python 里不能更改字符串。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值