leetcode+最长公共前缀 小安晋升分享(第14题哦)

本文详细解析了LeetCode第14题——查找字符串数组中的最长公共前缀的算法思路与Python实现过程,通过实例展示如何寻找多个字符串的共同起始部分。

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

罗马数字转整数

今天是小安开始Leetcode刷题的第14题,正文开始ing?

题目描述

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

如果不存在公共前缀,返回空字符串 “”。
题目原址

示例1

输入: [“flower”,“flow”,“flight”]
输出: “fl”

示例2

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

说明

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

方法:

思路

所求的最长公共前缀子串一定是每个字符串的前缀子串。所以选择长度最短的字符串作为标准,长度逐渐递减,找寻最长公共子串。

代码实现

【Python实现】

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: list[str]
        :rtype: str
        """
        t=""
        if not strs:
            return ""
        if len(strs)==1:
            return strs[0]
        tem=self.minlen(strs)
        j=len(tem)
        result=""
        
        flag=1
        while j>0:
            t=tem[0:j]
            for i in range(len(strs)):#当前值
                if strs[i][0:j]!=t:
                    flag=-1
                    break
            if flag==1:
                result=t
                break
            else:
                flag=1
                j-=1
        return result
                
    def minlen(self,strs):
        tem=strs[0]
        for i in range(len(strs)):
            if len(strs[i])<len(tem):
                tem=strs[i]
        return tem
            
        
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值