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
相关推荐
小马不起床3 分钟前
Django 后端实战指南_16:动作分类、动作库、动作收藏查询接口
数据库·python·django
ycydynq6 分钟前
django搜索功能
数据库·python·django
Zella折耳根7 分钟前
字符田字格绘制
python
SEO_juper10 分钟前
手写 llms.txt 验证器:让 AI 更愿意引用你的网站(GEO)
开发语言·人工智能·python·聚类·seo·独立站
Coder-magician21 分钟前
图论总结篇
算法·图论
小小张说故事23 分钟前
Python 的 list append 为什么是均摊 O(1)?拆开过度分配那张表,看容量翻倍背后的暗账
python
benjiangliu25 分钟前
恩培趣味计算机视觉-01-conda环境和Python库
开发语言·python·conda
有同事要进步27 分钟前
Leecode第68题:x的平方根
java·数据结构·算法
ZhengEnCi30 分钟前
用 YOLOv8n + 自研二分类模型做课堂行为识别:从 9000 张标注数据到 Flask 全栈落地
pytorch·python·计算机视觉
吹什么轩34 分钟前
linux系统复习:进程优先级与O(1)调度
java·linux·算法