344. 反转字符串 - 力扣(LeetCode)
看题解前:题目还是很简单的,实际上就是逆置字符串,我原来想着直接用库函数reverse不就完了,果然直接秒杀了,但是这个题也就没意义了,应该是手动模拟实现一下reverse。思路也比较简单,双指针一个指向第一个元素一个指向最后一个元素然后直接swap交换即可。
看题解后:果然是考察reverse的实现,思路也是双指针。
541. 反转字符串 II - 力扣(LeetCode)
看题解前:实际也是考察逆置,满足条件的子串逆置即可,这里就直接调用reverse即可,主要考察对条件的限制判断,考虑各种情况的反转。思路也比较简单,从第一个字母出发,翻转前k个字符串后,每次往后走2k步,判断剩余字符个数,少于k则剩下的全部翻转,大于k少于2k则翻转前k个。
看题解后:思路跟上述差不多。
剑指 Offer 05. 替换空格 - 力扣(LeetCode)
看题解前:比较简单,题目意思就是把字符串中的空格替换成“%20”,直接定义一个空串,然后遍历给的字符串,不是空格则空串+=该字符,是空格则+=“%20”,然后返回即可。
看题解后:题解的话没有开辟新的空间,对原串进行改动,基本思路就是先统计空格个数,然后修改串的大小,双指针,一个指向扩容后的最后一个空位。一个指向原来的最后一个元素。如果不是空格则把该元素往后移动,遇到空格则把该空格位置以及空格的下一个和下下一个位置修改成“%20”(需要注意的是,空格的下一个位置和下下一个位置是有元素的,不过前面已经把它赋值到后面去了,所以这里可以直接覆盖)。
151. 反转字符串中的单词 - 力扣(LeetCode)
看题解前:题目也比较容易理解,就是把单词顺序翻转一下,但是单词不翻转,并且要求前后没有空格且中间最多用单个空格,给出的字符串可能存在前导空格和尾随空格以及中间多个空格,就需要优先处理空格问题。基本思路:先处理无效空格,前导、尾随以及中间的多余空格;然后整体翻转;最后单词翻转即可。
看题解后:大题思路差不多,也是先处理空格,然后整体翻转,最后单词翻转。
剑指 Offer 58 - II. 左旋转字符串 - 力扣(LeetCode)
看题解前:还是比较简单的,直接创建字符串s1保留前k个字符,s2保留后n-k个字符,然后返回s2+s1即可。
![[Pasted image 20221006111426.png]]
还有一个如果不允许另外开辟空间的话,我记得之前看过一个解法,先逆置前k个,再逆置后n-k个,最后整体逆置即可,实现原理自己画图就可以理解了.
看题解后:题解为上述第二种思路.