简说Python,号主老表,Python终身学习者,数据分析爱好者,从18年开始分享Python知识,原创文章227篇,写过Python、SQL、Excel入门文章,也写过Web开发、数据分析文章,老表还总结整理了一份2022Python学习资料和电子书资源,关注后私信回复:2022 即可领取。
一、写在前面
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"
三、 分析
这个题目,看到第一眼,太简单了,应该是刷到目前为止最简单的一题,完全对字符串的一个遍历,重排。
正确思想的思路分析:
思路
四、解题
- 捷径的方法:
• ~一行代码~ 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)
- 提交结果
测试数据:476组
运行时间:48ms
击败人百分比:18.15%
虽然beat的人不多,但我有想法,我骄傲啊~
没有,其实上面的一行、两行代码解决问题超级方便,也算小技能了。
五、疑惑
今天,想谈谈学习。
不知道大家有没有试过一个人学习,我试过,从大一到大二,学习上几乎一个人,当然我很喜欢帮人解决问题,比如大一大二实训的时候,几乎和班上一半的人我都或多或少的交流过,所以学习上,还算可以。
但学Python,我是我们班,甚至我们院第一第二个人了,python少有人学,大家都在啃javaweb,前端,小程序等等,一个人真的太难了,遇到问题想找个人讨论都没有,还好我遇到了李老师,对我帮助特别大,加入实验室有地方学习,指导我学习方向,监督我学习,同时刷leetcode也很幸运,我遇到了光城学长,在思想、学历都要比我高很多的学长,给我很多建议,同时刷题路上我们也一直在坚持,交流思想,这也是我到现在还没放弃的原因。
我想的是:有一天,我把leetcode刷200、300、400道题,思想、能力上有很大提升后,我想写一本书,刷题的、励志的、理论知识的,等我公众号有了几百篇原创,等我看完几十本书籍,等我考完研,我想,我可以。
加油大家,任何时候,不要放弃,除非你找到了一条更好的路,你得确保,那的确是条了不起的路。
六、结语
上面提到的光城学长,现在研一,个人公众号:光城,大家可以关注一波。
另外加我微信:zs820553471,备注:leetcode,加入专门的leetcode刷题交流群。
坚持 and 努力 : 终有所获。