344.反转字符
- 学会了使用异或运算完成交换
541.反转字符串||
- 分类讨论有点,自己讨论没转过弯,看的题解。
卡码网54.替换数字
这题就是学个思路
从前向后填充就是O(n^2)的算法了,因为每次添加元素都要将添加元素之后的所有元素整体向后移动。
其实很多数组填充类的问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。
这么做有两个好处:
不用申请新数组。
从后向前填充元素,避免了从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动的问题。
这里也给大家拓展一下字符串和数组有什么差别,
字符串是若干字符组成的有限序列,也可以理解为是一个字符数组,但是很多语言对字符串做了特殊的规定,接下来我来说一说C/C++中的字符串。
在C语言中,把一个字符串存入一个数组时,也把结束符 '\0’存入数组,并以此作为该字符串是否结束的标志。
151.反转字符串
- 自己思路,使用一个vector类型的字符串容器,先遍历字符串,将单词按顺序放入容器,之后从末尾开始拼接成新的字符串
- 尝试实现:中间有个忘记检查是否到达末尾的错误,一次完成。
— 要求不能使用额外空间,否则直接使用split函数这题变水题—
3. 这里的思路是先去除所有的多余空格,rsize()。然后先全部反转,再将每个词反转回来。时间复杂度是O(n)级别的
卡码网 55.右旋字符串
- 自己思路:将k之后的所有字符切割,然后进行反转,最后拼到前面。使用库函数比较简单吧
- 但是限制了不能使用额外空间,那么上面的就不能用。
原来只需要先整体反转,再局部反转就行了