最近写的文章会偏向于Python实战一些,大家不要看着刷题,心里就有抵触了,其实刷题一直是学习的一个必要途径。你想想高中时候,如果你光听听课,学学理论就行的话,那不是每个人都成状元啦。
我每天分享的Python题目,都是花时间从leetcode上找的,自己先做一遍,把思路理清了才敢分享出来,每道题都是掰开揉碎细讲的,不仅适合入门的同学,对于一些应聘找工作的小伙伴也有参考价值。
一起来看一下今天的题目吧!
给定一个字符串,寻找没有字符串重复的最长子字符串。
示例:
给定“abcabcbb”,没有重复字符的最长子串是“abc”,那么长度是3
给定“bbbbb”,最长的子串就是“b”,长度是1
给定“pwwkew”,最长子串是“wke”,长度是3。请注意答案必须是一个子串,“pwke”是子序列,而不是子串。
下面是我写的代码
每段代码我都有注释,帮助大家理解。下面主要是讲一下代码中涉及到的知识点。
代码解析:
(1)range函数,在Python3中返回的是一个可迭代对象,而不是列表类型,所以打印的时候不会打印列表。
函数语法:range(stop);range(start,stop[,step])。
参数说明:
Start:计数从start开始。默认是从0开始。例如
range(5)
range(5) #代表从0到5(不包含5)
[0, 1, 2, 3, 4]
stop:计数到stop结束,但不包括stop。例如
range(0,5)
range(0,5) #代表从0到5(不包含5)
[0,1, 2, 3, 4]
(2)append函数,用于在列表末尾添加新的对象
函数语法:list。append(obj),obj是添加到列表末尾的对象
需要注意的是,该方法无返回值,但是会修改原来的列表。
(3)python中的yield。我的理解是这样的,yield是一个类似return的关键字,迭代一次遇到yield时就返回yield后面(右边)的值,下一次迭代时,从上一次迭代遇到的yield后面的代码(下一行)开始执行。
简要理解,yield就是return返回一个值,并且记住这个返回的位置,下一次迭代就从这个位置后(下一行)开始。
(4)sorted函数,对所有可迭代的对象进行排序操作。
函数语法:sorted(iterable,key=None,reverse=False)
参数说明:
iterable:可迭代对象
key:主要是用来进行比较的元素,只有一个元素,具体的函数参数就是取自于可迭代对象中,指定可迭代中的一个元素来进行排序
reverse:排序规则,reverse=True降序,reverse=False升序(默认)
example_list = [5, 0, 6, 1, 2, 7, 3, 4]
result_list = sorted(example_list, key=lambda x: x*-1)
print(result_list)[7, 6, 5, 4, 3, 2, 1, 0]
(5)join函数,用于将序列中的元素以指定的字符连接生成一个新的字符串
函数语法:str.join(sequence)
参数说明:sequence:要连接的元素序列。
该函数返回的是通过指定字符连接序列中元素后生成的新字符串。
s1 = "-"
s2 = ""
seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
print (s1.join( seq ))
print (s2.join( seq ))r-u-n-o-o-b
runoob
(6)len函数,返回对象(字符、列表、元组等)长度或项目个数
函数语法:len(s),s:对象。
str = "runoob"
print(len(str)) # 字符串长度l = [1,2,3,4,5]
print(len(l)) # 列表元素个数6
5
写到这里,我才算把题目中涉及的知识点说清楚了,所以,对于新手来说,不管是刷题还是看学习视频,切莫贪多,老老实实地把每道题弄懂才是最重要的。
很多学习Python的人都抱怨说Python虽然功能强大,但是内置函数太多,我记不住,但是,你要是像我这样每次写代码时,把用到的函数都总结一遍,时间久了,我相信肯定对大多数函数也会熟能生巧的。