344.反转字符串
状态:成功完成。
初始思路:双指针交换位置就可以,如果元素个数为偶数,则刚好交换完最后一组后,left>right;如果元素个数为奇数,交换完最后一组后,left和right同时到达中位数,不需要交换。
541. 反转字符串II
状态:没做出来。
初始思路:这道题是以上一个题目为基础的,我的初始思路是很混乱的,我首先想到了快慢指针,感觉不太方便。然后又想到了先算有几组2k和余数为多少,但是这种我又不知道怎么确定开始和结束位置,很混乱。
看完视频讲解之后:思路很清晰 先写一个翻转字符串函数,左闭右开的去翻转。我认为最难洗想到的一点就是for循环中i每次步进2k,很厉害。自己就是思维太混乱了,以及一组一组不知道该怎么办。需要注意在python代码中传递参数时,可变对象可以直接在函数中被修改,因为它们是引用传递;而不可变对象不会直接在函数中被改变。这里可以str是不可改变的对象,所以可以先转为list,之后再join。
卡码网:54.替换数字
状态:gpt帮助下完成。
初始思路:检查每一个s[i]如果在'a''z'之间,就跳过,如果不在的话,就是数字,就替为‘number’,python中可以转为列表之后直接替换,c++中需要用replace函数来替换 s.replace(i, 1, "number");
看完讲解之后:这里考察的就是替换,所以不应该直接用一个函数来解决。真正想考察的应该是其实很多数组填充类的问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。
这么做有两个好处:
- 不用申请新数组。
- 从后向前填充元素,避免了从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动的问题。
最后还是用到了双指针,需要注意的就是双指针的移动问题。
标签:卡码,函数,填充,反转,元素,字符串,替换,指针 From: https://blog.csdn.net/xiaotaoooo/article/details/142672179