[LintCode]最长公共前缀python

1.用到了map函数,不会的可以先看看

1.利用map函数计算出每一个字符串的长度
2.根据长度进而获得最短字符串的下标
3.循环对比获得一个列表
4.判断上面获取的列表当没有False时,返回结果
def longestCommonPrefix(strs):
    if len(strs) < 1:
        return ""
    a = list(map(lambda x:len(x), strs))
    b = min(a)
    c = a.index(b)
    for i in range(b):
        d = list(map(lambda x:strs[c][:b-i:] in x[:b-i], strs))
        if False not in d:
            return strs[c][:b-i:]

    return ""
if __name__ == '__main__':
    strs = ["ca","a"]
    print(longestCommonPrefix(strs))

2.利用zip函数

利用zip函数,其中*去维数
def longestCommonPrefix(strs):

    prefix = ''
    for item in list(zip(*strs)):
        print(item)
        if len(set(item)) > 1:
            return prefix
        else:
            prefix += item[0]
    return prefix

if __name__ == '__main__':
    strs = ["flower","flow","flight"]
    print(longestCommonPrefix(strs))
def longestCommonPrefix(strs):

    if len(strs) <= 0: return ""
    common_str = ""
    for i in range(len(strs[0])):
        common_str += strs[0][i]
        for single_str in strs[1:]:
            if len(single_str) <= i: return common_str[:-1]
            if single_str[i] != common_str[-1]: return common_str[:-1]

    return common_str

if __name__ == '__main__':
    strs = ["flower","flow","flight"]
    print(longestCommonPrefix(strs))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值