14.最长公共前缀

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

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

示例 1:

复制代码
输入:strs = ["flower","flow","flight"]
输出:"fl"

示例 2:

复制代码
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

思路:这道题思路不难,主要是具体的实现。要找到字符串数组中的公共前缀,很直观的思路就是取出数组中每个字符串对应的字符来比一比,相同则继续;我们可以自己写函数,比如把第一个字符串做基准,然后每次都取第一个字符串对应位置的字符,然后去和数组中剩余字符串对应位置的字符相比,但这样很麻烦。这里使用python中的一个内置函数zip()

zip函数的介绍放在下面了。

使用zip函数,我们可以很方便的把字符串数组中每个位置对应的字符放在一起,例如

示例 1:

复制代码
输入:strs = ["flower","flow","flight"]

我们使用zip函数后就会变成[(f,f,f),(l,l,l),(o,o,i),(w,w,g)],虽然flower和flight还有剩余字符,但flow字符已经全部结束了,所以使用zip函数不会包含剩余的字符。

这样一来,所有同位置的字符都被放在了一起,我们可以使用set来判断所有同位置的字符是否相同,若相同则加入共同前缀,否则结束。

zip函数:Python zip() 函数 | 菜鸟教程

代码(Python):

python 复制代码
class Solution(object):
    def longestCommonPrefix(self, strs):
        result = ''                           #保存结果
        zipped = zip(*strs)                   #对strs数组使用zip函数
        for i,zipstr in enumerate(zipped):
            if len(set(zipstr)) == 1:         #若相同位置的字符都相同
                result += zipstr[0]           #加入共同前缀
            else:
                break
        return result
相关推荐
X56612 小时前
如何在 Laravel 中正确保存嵌套动态表单数据(主服务与子服务)
jvm·数据库·python
超级码力6662 小时前
【Latex文件架构】Latex文件架构模板
算法·数学建模·信息可视化
ZhengEnCi2 小时前
03ab-PyTorch安装教程 📚
python
穿条秋裤到处跑3 小时前
每日一道leetcode(2026.04.29):二维网格图中探测环
算法·leetcode·职场和发展
Merlos_wind3 小时前
HashMap详解
算法·哈希算法·散列表
狐狐生风3 小时前
LangChain 向量存储:Chroma、FAISS
人工智能·python·学习·langchain·faiss·agentai
狐狐生风3 小时前
LangChain RAG 基础
人工智能·python·学习·langchain·rag·agentai
汉克老师4 小时前
GESP2025年3月认证C++五级( 第三部分编程题(1、平均分配))
c++·算法·贪心算法·排序·gesp5级·gesp五级
老前端的功夫4 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
yaoxin5211234 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python