python每日一练(最长公共前缀)

我们先来看问题:
python每日一练(最长公共前缀)_第1张图片
我们先对题目进行分析,首先我们知道的是,如果字符串为空。那么输出 “”,如果字符串不为空,那么我们的想法就是,一一进行匹配,这里我们就需要了解几个函数。
首先我们要了解zip函数,python中的zip是将不同列表中的元素进行一一对应,例如:
a=[1,2,3],b=[2,3,4]
那么list(zip(a,b))的结果就是[(1,2),(2,3),(3,4)]
还有一个函数就是set函数,set函数表示交集的意思,假如说(a,b,c)的交集就是(a,b,c),(a,b,b)的交集就是(a,b)
,(a,a,a)的交集就是(a)。
我们有了这种准备后开始写代码

strs = ["flower","flow","flight"]
result=''
for i in list(zip(*strs)):#这里面的*号表示把strs中的每一个元素都看成一个整体。
    if len(set(i))==1:
    #根据上方所讲,如果都相同那么交集的长度就是1
       result+=i[0]#此时取出相同的那个元素
    else:
       break#如果不同,直接退出循环
return result

这种方法对比于暴力解法要更加简洁明了,我们在日常学习中要多注意函数的应用方法!!!

笨鸟先飞!

你可能感兴趣的:(python,list)