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
相关推荐
灵感__idea17 小时前
Hello 算法:贪心的世界
前端·javascript·算法
知行合一。。。18 小时前
Python--04--数据容器(总结)
开发语言·python
架构师老Y18 小时前
008、容器化部署:Docker与Python应用打包
python·容器·架构
澈20718 小时前
深入浅出C++滑动窗口算法:原理、实现与实战应用详解
数据结构·c++·算法
lifewange18 小时前
pytest-类中测试方法、多文件批量执行
开发语言·python·pytest
ambition2024218 小时前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程
c语言·数据结构·c++·算法·贪心算法·深度优先
pluvium2719 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh
cmpxr_19 小时前
【C】原码和补码以及环形坐标取模算法
c语言·开发语言·算法
qiqsevenqiqiqiqi19 小时前
前缀和差分
算法·图论
代码旅人ing19 小时前
链表算法刷题指南
数据结构·算法·链表