day08 代码随想录算法训练营 541. 反转字符串 II
题目:541. 反转字符串 II
我的感悟:
- 你别看这题简单,python里面细节很多
理解难点:
- 字符串转化为列表来算
- s[1:99] 只会取到s[1:s.size]
- 这个range(0,size,k) 是可以取到步长的
- 或者用另外的思路。
代码难点:
总结概括:
- 注意[1:999]这里的容错机制
- range可以遍历3处
代码示例:
class Solution:
def reverseStr(self, s: str, k: int) -> str:
# 先要转换为list来处理
# 内置写一个反转的操作
def reverse(text:List[str]):
return text[::-1]
l = list(s)
for i in range(0,len(s),2*k): # 从0遍历到结尾,步长为2k
l[i:i+k] = reverse(l[i:i+k]) # 每次反转这个一串(如果i+k大了也就默认处理员原来的)
return ''.join(l)
通过截图:
另外的思路:
class Solution:
def reverseStr(self, s: str, k: int) -> str:
res = ""
flag = -1
for i in range(0,len(s),k):
temp = s[i:i+k] # 每次取k段
res += temp[::flag] # 第1段取反,第2段正常...反复循环
flag = -flag # 取反
return res
资料:
题目链接/文章讲解/视频讲解:https://programmercarl.com/0541.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2II.html