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
相关推荐
小白学大数据几秒前
Python爬虫中time.sleep()与动态加载的配合使用
爬虫·python·scrapy·数据分析
小饕9 分钟前
LangChain构建大模型应用之问答系统(五)
人工智能·python·langchain
大锦终10 分钟前
【C++】红黑树
c语言·开发语言·数据结构·c++
David Bates23 分钟前
代码随想录第41天:图论2(岛屿系列)
python·算法·图论
似水এ᭄往昔24 分钟前
【数据结构】——栈
c语言·数据结构
司小豆30 分钟前
视觉-语言基础模型作为高效的机器人模仿学习范式
人工智能·算法·机器人
是代码侠呀36 分钟前
让Promise飞,让github star 飞
python·开源·github·github star·github 加星
伊织code1 小时前
PyTorch API 10 - benchmark、data、批处理、命名张量
pytorch·python·ai·api·-·10
福居路冥想的草莓1 小时前
逆波兰表达式求值(中等)
数据结构
oioihoii1 小时前
C++23 新特性:为 std::pair 的转发构造函数添加默认实参
算法·c++23