zoukankan      html  css  js  c++  java
  • Leetcode刷题10.21(二)——反转字符串 & 反转字符串II

    leetcode 344 反转字符串

      没有什么特别的,双指针遍历交换。

    class Solution:
        def reverseString(self, s: List[str]) -> None:
            """
            Do not return anything, modify s in-place instead.
            """
            if len(s)<2:
                return 
            L = 0
            R = len(s)-1
            while L < R:
                s[L], s[R] = s[R], s[L]
                L += 1
                R -= 1

    leetcode 541 反转字符串II

      奇怪的要求.jpg

      简单来说就是将原来的字符串分成几组,每组只交换前面的一半字符。需要注意的是最后一段字符的处理。有两种情况:1.最后一段所有字符均要反转 2.只有前半部分需要反转。

    class Solution:
        def reverseStr(self, s: str, k: int) -> str:
            s = list(s)            # 字符串是不可变对象,索引赋值需要新建一个列表
            for i in range(0,len(s),2*k):
                L = i
                R = i+k
                if R > len(s):     # 此处判断一下最后一段的末尾是否在反转范围内
                    R = len(s)
                s[L:R] = reversed(s[L:R])
            return ''.join(s)   

    需要注意的就是此题跟上一题不同,给出的输入是一个字符串,需要先转换成列表再转换回字符串。

  • 相关阅读:
    流程控制之while循环
    流程控制之if判断
    基本运算符
    格式化输出的三种方式
    Python与用户交互
    解压缩
    布尔类型
    字典类型
    列表类型
    字符串类型
  • 原文地址:https://www.cnblogs.com/nekoneko-15/p/13862527.html
Copyright © 2011-2022 走看看