day08 代码随想录算法训练营 541. 反转字符串 II

发布时间 2024-01-04 16:56:09作者: o蹲蹲o

题目: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