代码随想录训练营第八天|344.反转字符

344.反转字符
  1. 学会了使用异或运算完成交换
541.反转字符串||
  1. 分类讨论有点,自己讨论没转过弯,看的题解。
卡码网54.替换数字

这题就是学个思路
从前向后填充就是O(n^2)的算法了,因为每次添加元素都要将添加元素之后的所有元素整体向后移动。

其实很多数组填充类的问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。

这么做有两个好处:

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

这里也给大家拓展一下字符串和数组有什么差别,

字符串是若干字符组成的有限序列,也可以理解为是一个字符数组,但是很多语言对字符串做了特殊的规定,接下来我来说一说C/C++中的字符串。

在C语言中,把一个字符串存入一个数组时,也把结束符 '\0’存入数组,并以此作为该字符串是否结束的标志。

151.反转字符串
  1. 自己思路,使用一个vector类型的字符串容器,先遍历字符串,将单词按顺序放入容器,之后从末尾开始拼接成新的字符串
  2. 尝试实现:中间有个忘记检查是否到达末尾的错误,一次完成。

— 要求不能使用额外空间,否则直接使用split函数这题变水题—
3. 这里的思路是先去除所有的多余空格,rsize()。然后先全部反转,再将每个词反转回来。时间复杂度是O(n)级别的

卡码网 55.右旋字符串
  1. 自己思路:将k之后的所有字符切割,然后进行反转,最后拼到前面。使用库函数比较简单吧
  2. 但是限制了不能使用额外空间,那么上面的就不能用。
    原来只需要先整体反转,再局部反转就行了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值