leetcode的python实现 刷题笔记14:最长公共前缀

本文介绍了一种算法,用于在字符串数组中查找最长的公共前缀。通过遍历数组和字符串,确定第一个元素的每个字母是否存在于其他元素中,从而找出最大长度的相同前缀。

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

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。


class Solution(object):
    def longestCommonPrefix(self, shuzu):
        """
        :type strs: List[str]
        :rtype: str
        """
        # 如果是空数组,就返回空
        if len(shuzu) == 0:
            return ""
        # 定义一些标志位,i表示的是字符串的位置,j表示的是数组的元素,end相同前缀的最后位置
        i = 0
        j = 0
        end = 0
        # 遍历数组和字符串
        while j < len(shuzu) and i < len(shuzu[j]):
            # 当j == 0时,找到的前缀字母是什么,先确定第一个元素的字母,然后一个个遍历,看看其他的元素是否都有这个字母
            if j == 0:
                gonggongqianzui = shuzu[j][i]
            # 否则说明没有相同的字母了。就跳出循环
            else:
                if shuzu[j][i] != gonggongqianzui:
                    break
            # 如果一直遍历,到了最后一个元素的时候,就开始找元素的下一个字母
            if j == len(shuzu) - 1:
                i += 1
                j = 0
                end += 1
            # 否则一直找数组的元素
            else:
                j += 1
        # 跳出循环之后,就返回第一个元素的被找到的前缀
        return shuzu[j][:end]

sl = Solution()
st = sl.longestCommonPrefix(["flower","flower","flowe","fldsfew"])
print(st)

总结:

1.思路是先确定数组中的第一个元素,然后分别对这个元素的所有字母都进行遍历,看看其他元素是否都存在这个元素,如果有就继续遍历下一个字母,并且记录当前相同字母的最大长度,如果没有,就跳出循环。

2.选取一个参照物,以及记录字母的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值