lintcode python ——最长公共前缀(LCP)

本篇博客探讨如何使用Python解决找出k个字符串的最长公共前缀问题。通过样例分析,例如在给定字符串集合{'ABCD', 'ABEF', 'ACEF'}中,最长公共前缀是'A';而在{'ABCDEFG', 'ABCEFG', 'ABCEFA'}中,最长公共前缀是'ABC'。" 117753579,11085070,使用Dreamweaver创建美食主题HTML+CSS静态网页,"['前端开发', 'HTML', 'CSS', '网页设计', 'Adobe Dreamweaver']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:给k个字符串,求出他们的最长公共前缀(LCP)

样例

在 "ABCD" "ABEF" 和 "ACEF" 中,  LCP 为 "A"

在 "ABCDEFG", "ABCEFG", "ABCEFA" 中, LCP 为 "ABC"

class Solution:
    def longestCommonPrefix(self, strs):
        n = 0
        p = []
        k = len(strs)
        if k == 0:     #排除strs为空的情况
            return ""
        l2 = []
        for v in strs: 
            l2.append(len(v)) #转化为长度列表并保存
        m = min(l2)   
        if m == 0:   #排除单个字串为空的情况
            return ""
        while(True):
            l = []
            z = []
            for i in range(k):
                l.append(strs[i][n])
                z.append(1)
            l1 = zip(l,z)
            d = dict(l1)    #转化为字典,合并相同字符
            if(len(d) == 1):#如果字典长度为1,说明前缀相同
                n = n + 1
                p.append(l[0])
            else:
                t = ''.join(p)   #连接字符
                return t
            if n == m:
                t = ''.join(p)
                return t


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值