• 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)   

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

  • 相关阅读:
    面向对象三大特性之封装
    基本数据类型和引用数据类型
    面向对象三大特性之继承
    多表连接查询
    MySQL模糊查询
    MySQL数据查询入门
    Matlab 之 find()函数
    Matlab 之 字符串数组查找
    Matlab 之 数据元素访问
    让WIN10输入法变回传统模式
  • 原文地址:https://www.cnblogs.com/nekoneko-15/p/13862527.html
Copyright © 2020-2023  润新知