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)   

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

原文地址:https://www.cnblogs.com/nekoneko-15/p/13862527.html