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
相关推荐
Dingdangcat862 分钟前
视杯视盘分割与青光眼检测_faster-rcnn_hrnetv2p-w32-1x_coco模型应用实践
python
喵手3 分钟前
Python爬虫实战:携程景点数据采集实战:从多页列表到结构化数据集(附SQLite持久化存储)!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·携程景点数据采集·sqlite存储采集数据
无垠的广袤3 分钟前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:人脸检测
linux·人工智能·python·opencv·开发板
yuankoudaodaokou3 分钟前
突破大型工件测量瓶颈:思看科技在风电与船舶制造中的革新应用
python·科技·制造
v_for_van3 分钟前
力扣刷题记录1(无算法背景,纯C语言)
算法·leetcode·职场和发展
sjjhd6528 分钟前
C++模拟器开发实践
开发语言·c++·算法
踩坑记录8 分钟前
leetcode hot100 25. K 个一组翻转链表 hard
leetcode·链表
七夜zippoe9 分钟前
大模型低成本高性能演进 从GPT到DeepSeek的技术实战手记
人工智能·gpt·算法·架构·deepseek
二年级程序员10 分钟前
qsort函数的使用与模拟实现
c语言·数据结构·算法·排序算法
Allen_LVyingbo11 分钟前
面向70B多模态医疗大模型预训练的工程落地(医疗大模型预训练扩展包)
人工智能·python·分类·知识图谱·健康医疗·迁移学习