最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。

方法一:

使用两个嵌套的循环来比较每个字符串的字符,从而找到它们的最长公共前缀。

  1. 检查字符串列表是否为空,如果是,则返回空字符串。
  2. 从第一个字符串的第一个字符开始,逐个比较每个字符串的对应字符,遇到不匹配的字符时,返回最长公共前缀。
  3. 循环完成后仍然没有找到最长公共前缀,说明第一个字符串 strs[0] 就是所有字符串的公共前缀,因此直接将其作为结果字符串返回。
class Solution(object):
    def longestCommonPrefix(self, strs):
        if not strs:
            return ""
        re_str = ""
        for i in range(len(strs[0])): # 遍历第一个字符串
            for j in range(1, len(strs)): # 遍历剩下的字符串
                if i >= len(strs[j]) or strs[j][i] != strs[0][i]: # 如果第一个字符串长度大于当前字符串,或者当前字符不相等,则返回当前字符串,否则添加到结果中
                    return re_str
            re_str += strs[0][i] # 所有字符串当前位置的字符都相同,添加到结果中
        return re_str
方法二:

可以将字符串列表按字母顺序排序,然后比较第一个字符串和最后一个字符串的相应字符,因为它们是列表中最不相似的字符串,其最长公共前缀将是所有字符串的公共前缀。只需要比较最不相似的字符串。

class Solution(object):
    def longestCommonPrefix(self, strs):
        if not strs:
            return ""
        strs.sort() # 排序
        re_str=""
        for i in range(len(strs[0])): # 遍历第一个字符
            if strs[0][i]==strs[-1][i]: #如果第一个字符当前位置和最后一个字符当前位置相等,则添加到结果中
                re_str += strs[0][i]
            else: # 不是所有字符都相同,退出循环,返回前缀
                break
        return re_str # 返回最长公共前缀
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值