<LeetCode天梯>Day015 反转字符串(双指针) | 初级算法 | Python

简介: <LeetCode天梯>Day015 反转字符串(双指针) | 初级算法 | Python

以下为我的天梯积分规则:


每日至少一题:一题积分+10分

若多做了一题(或多一种方法解答),则当日积分+20分(+10+10)

若做了三道以上,则从第三题开始算+20分(如:做了三道题则积分-10+10+20=40;做了四道题则积分–10+10+20+20=60)


初始分为100分

若差一天没做题,则扣积分-10分(周六、周日除外注:休息)

坚持!!!


初级算法

刷题目录

字符串


image.png

image.png

题干

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。


不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。


示例1:


输入:s = [“h”,“e”,“l”,“l”,“o”]

输出:[“o”,“l”,“l”,“e”,“h”]


示例2:


输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]

输出:[“h”,“a”,“n”,“n”,“a”,“H”]


分析:


这里说两句,虽然Python提供了很多很多的库和内置函数,可以解决很多问题,留言区有位题友说的很好,但是如果是来刷力扣,那么请记得自己的初心,如果仅仅是为了找工作,请左转百度题库。

image.png

回归正题,为了让自己变强,少用便捷的方法。

今天的字符串的题还算比较简单吧,本题我们需要操作字符串,让其翻转,那么和之前的数组的翻转操作类似,我们可以用双指针,递归的思想,只能对原数组进行操作,不开辟新的数据空间。


双指针法

我们可以设两个指针,p1、p2,一个头指针,一个尾指针,一头一尾,然后进行交换操作,遍历所有,最终完成操作。

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

速度感觉还行吧~

image.png

image.png

内置函数法(玩笑)

由于是数组,我们可以用切片翻转,虽然这个方法不太聪明,且违背初心,我们还是得掌握一下

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
    s[:] = s[::-1]

image.png

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
    s.reverse()

image.png



相关文章
|
1月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
217 100
|
1月前
|
开发者 Python
Python中的f-string:高效字符串格式化的利器
Python中的f-string:高效字符串格式化的利器
301 99
|
1月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
|
1月前
|
开发者 Python
Python f-strings:更优雅的字符串格式化技巧
Python f-strings:更优雅的字符串格式化技巧
|
1月前
|
开发者 Python
Python f-string:高效字符串格式化的艺术
Python f-string:高效字符串格式化的艺术
|
16天前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
85 3
|
8天前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
人工智能 算法 Python
「只出现一次的数字」python之leetcode刷题|007
题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。
1562 0
|
机器人 Python
「判断路线成圈」python之leetcode刷题|005
题目 初始位置 (0, 0) 处有一个机器人。给出它的一系列动作,判断这个机器人的移动路线是否形成一个圆圈,换言之就是判断它是否会移回到原来的位置。 移动顺序由一个字符串表示。
952 0
|
1月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
205 102

热门文章

最新文章

推荐镜像

更多