【边学边敲边记】LeetCode012:反转字符串

简介: 【边学边敲边记】LeetCode012:反转字符串

简说Python,号主老表,Python终身学习者,数据分析爱好者,从18年开始分享Python知识,原创文章227篇,写过Python、SQL、Excel入门文章,也写过Web开发、数据分析文章,老表还总结整理了一份2022Python学习资料和电子书资源,关注后私信回复:2022 即可领取。

image.png

一、写在前面

LeetCode 第二题两数之和传输门:LeetCode011 : 字符串相乘

今天给大家分享的是LeetCode 数组与字符串 第十二题:反转字符串,为面试而生,期待你的加入。

“Use the utility in the API is recommended in the project. But if you use it in an interview, you will definitely fail .

二、今日题目

编写一个函数,其作用是将输入的字符串反转过来。

输入: "hello"
输出: "olleh"
输入: "A man, a plan, a canal: Panama"
输出: "amanaP :lanac a ,nalp a ,nam A"

三、 分析

这个题目,看到第一眼,太简单了,应该是刷到目前为止最简单的一题,完全对字符串的一个遍历,重排。
正确思想的思路分析:

image.png

思路


四、解题

  • 捷径的方法:
• ~一行代码~
class Solution(object):
    def reverseString(self, s):
        """
        :type s: str
        :rtype: str
        """
        return s[::-1]

切片操作,前一篇Python小知识 | 这些技能你不会?(一)有较详细介绍切片操作。
 ~两行代码~
(1)reduce函数

class Solution(object):
    def reverseString(self, s):
        """
        :type s: str
        :rtype: str
        """
        from functools import reduce
        return reduce(lambda x,y:y+x,s)

函数介绍:reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

(2)reversed函数

class Solution(object):
    def reverseString(self, s):
        """
        :type s: str
        :rtype: str
        """
        s = list(s)
        return "".join(reversed(s))

函数介绍:reversed 函数返回一个反转的迭代器。
对一个可迭代对象就行反转,比如列表、集合等,返回值也为一个迭代对象,这里先把字符串转换成列表,然后调用reversed函数,最后用join函数把列表迭代连接。

  • 正常思想
    遍历,替换值,思路已经在分析里给出
    时间复杂度:O(n^2)

class Solution(object):
    def reverseString(self, s):
        """
        :type s: str
        :rtype: str
        """
        result = list(s)
        for i in range(len(result)//2):
            temp = result[len(result)-i-1]
            result[len(result)-i-1] = result[i]
            result[i] = temp
        return ''.join(result)
  • 提交结果
    image.png

测试数据:476组
运行时间:48ms
击败人百分比:18.15%

虽然beat的人不多,但我有想法,我骄傲啊~
没有,其实上面的一行、两行代码解决问题超级方便,也算小技能了。

五、疑惑

今天,想谈谈学习。


不知道大家有没有试过一个人学习,我试过,从大一到大二,学习上几乎一个人,当然我很喜欢帮人解决问题,比如大一大二实训的时候,几乎和班上一半的人我都或多或少的交流过,所以学习上,还算可以。


但学Python,我是我们班,甚至我们院第一第二个人了,python少有人学,大家都在啃javaweb,前端,小程序等等,一个人真的太难了,遇到问题想找个人讨论都没有,还好我遇到了李老师,对我帮助特别大,加入实验室有地方学习,指导我学习方向,监督我学习,同时刷leetcode也很幸运,我遇到了光城学长,在思想、学历都要比我高很多的学长,给我很多建议,同时刷题路上我们也一直在坚持,交流思想,这也是我到现在还没放弃的原因。


我想的是:有一天,我把leetcode刷200、300、400道题,思想、能力上有很大提升后,我想写一本书,刷题的、励志的、理论知识的,等我公众号有了几百篇原创,等我看完几十本书籍,等我考完研,我想,我可以。


加油大家,任何时候,不要放弃,除非你找到了一条更好的路,你得确保,那的确是条了不起的路。

六、结语

上面提到的光城学长,现在研一,个人公众号:光城,大家可以关注一波。
另外加我微信:zs820553471,备注:leetcode,加入专门的leetcode刷题交流群。
坚持 and 努力 : 终有所获。

相关文章
|
25天前
|
JavaScript
力扣3333.找到初始输入字符串Ⅱ
【10月更文挑战第9天】力扣3333.找到初始输入字符串Ⅱ
31 1
|
1月前
|
C++
Leetcode第43题(字符串相乘)
本篇介绍了一种用C++实现的字符串表示的非负整数相乘的方法,通过逆向编号字符串,将乘法运算转化为二维数组的累加过程,最后处理进位并转换为字符串结果,解决了两个大数相乘的问题。
24 9
|
1月前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
17 0
|
1月前
【LeetCode 22】459.重复的子字符串
【LeetCode 22】459.重复的子字符串
28 0
|
1月前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
19 0
|
1月前
【LeetCode 19】541.反转字符串II
【LeetCode 19】541.反转字符串II
20 0
|
1月前
【LeetCode 18】6.2.反转字符串
【LeetCode 18】6.2.反转字符串
14 0
|
3月前
|
存储 算法
LeetCode第43题字符串相乘
LeetCode第43题"字符串相乘"的解题方法,通过使用数组存储乘积并处理进位,避免了字符串转换数字的复杂性,提高了算法效率。
LeetCode第43题字符串相乘
|
3月前
|
算法 Java
LeetCode第28题找出字符串中第一个匹配项的下标
这篇文章介绍了LeetCode第28题"找出字符串中第一个匹配项的下标"的两种解法:暴力解法和KMP算法,并解释了KMP算法通过构建前缀表来提高字符串搜索的效率。
LeetCode第28题找出字符串中第一个匹配项的下标
|
3月前
|
算法
LeetCode第8题字符串转换整数 (atoi)
该文章介绍了 LeetCode 第 8 题字符串转换整数 (atoi)的解法,需要对字符串进行格式解析与校验,去除前导空格和处理正负号,通过从高位到低位的计算方式将字符串转换为整数,并处理越界情况。同时总结了这几道题都需要对数字的表示有理解。
LeetCode第8题字符串转换整数 (atoi)