目录
344.反转字符串
建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数题目链接/文章讲解/视频讲解:代码随想录
思路
python组选手见到这道题直接笑嘻了,这不是直接把字符串存进data[ ] ,然后
data[left], data[right] = data[right], data[left] 就换过来了吗。。。
好吧不好意思,我话说早了。。。原来有更简单的:
下面这个更是一个字,绝
代码
from typing import List
class Solution:
def reverseString(self, s: List[str]) -> None:
left=0
right=len(s)-1
while left<=right:
s[left],s[right]=s[right],s[left]
left+=1
right-=1
return
541.反转字符串II
建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。题目链接/文章讲解/视频讲解:代码随想录
思路
我的思路是把字符串长度先和2k进行取余的操作,得到前面的整数段和后面的小段,对前面的整数段使用for循环,步长是2k,在每一次循环中对前k个元素进行反转。然后单独对后面那段分析。
链接里的思路都非常好,到今天我才知道:
字符串末尾如果超过最大长度,则会返回至字符串最后一个值,这个特性可以避免一些边界条件的处理。
代码
我的一坨,直接看链接吧。
卡码网:54.替换数字
建议:对于线性数据结构,填充或者删除,后序处理会高效的多。好好体会一下。题目链接/文章讲解:代码随想录
思路
和链接一致,就是。。。原来有函数可以直接判断一个数是不是数字啊。。。用.isdigit() 就能返回一个数是不是数字,还有我一直不知道怎么把列表变成字符串传出去,原来可以return ''.join(lst)变成一个string
代码
class Solution:
def change(self, s):
lst = list(s) # Python里面的string也是不可改的,所以也是需要额外空间的。空间复杂度:O(n)。
for i in range(len(lst)):
if lst[i].isdigit():
lst[i] = "number"
return ''.join(lst)
151.翻转字符串里的单词
建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。题目链接/文章讲解/视频讲解:代码随想录
思路
这道题,测试用例真是我直呼好家伙,空格可以出现在左边右边,中间还能给我连着按好多个空格(每日崩溃1/1)
当然这些都是有解的,用data = s.strip(" ").split() 直接把左边右边和中间的空格全部干掉,data存的直接就是我要的每一个词。然后用直接用join()连接即可。
代码(真的很简洁了,两行代码就解决)
class Solution:
def reverseWords(self, s: str) -> str:
data = s.strip(" ").split()
string = " ".join(word for word in data[::-1])
return string
卡码网:55.右旋转字符串
建议:题解中的解法如果没接触过的话,应该会想不到题目链接/文章讲解:
思路
就是直接用切片把后面移到前面,前面跟在后面嘛,没什么好讲的。
代码
k = int(input())
string = input()
string = string[len(string)-k:] + string[:len(string)-k]
print(string)
8天了,终于有一天是准时打卡了!!!
下班~