LeetCode刷题14-简单-最长公共前缀

Posted 布小禅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题14-简单-最长公共前缀相关的知识,希望对你有一定的参考价值。

前言

算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!

第一遍,不求最优解,但求能过!!!

1. 题目描述

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”

难度:简单

2. 解题思路

先把字符串遍历出来,再把字符串遍历了,然后比对每个字符

看起来思路是没错的,但是寻常的思路却行不通

不过Python封装了一个叫做zip的函数,zip中文意思是拉链

在Python的作用也像拉链一样,能将几个列表,元祖等串联起来,一起分配给某个临时变量

可以这样用:

a = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i, j in zip(a, b):
    print(i + " "+  j)

会将a和b里面的元素一一对应的输出

a 	 1
b 	 2
c 	 3
d 	 4
e 	 5
f 	 6
g 	 7

也可以这样使用:

strs = ["abcd1", "asq1", "布小禅啊", "收款单把手"]
for i in zip(*strs):
    print(i)

运行结果:

('a', 'a', '布', '收')
('b', 's', '小', '款')
('c', 'q', '禅', '单')
('d', '1', '啊', '把')

他会把列表里的每个元素的元素都存放在一个元组中,这就适用于我们这道题了

将我们的字符串列表中的每个元素一一对应的放在元组中

然后使用set()函数将元组变成不含有重复项的集合

再对集合的长度进行判断,就可以拿到最长公共前缀

3. 代码

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        """
        编写一个函数来查找字符串数组中的最长公共前缀。
        如果不存在公共前缀,返回空字符串 ""
        思路:
        将我们的字符串列表中的每个元素一一对应的放在元组中
        然后使用set()函数将元组变成不含有重复项的集合
        再对集合的长度进行判断,就可以拿到最长公共前缀
        :param strs:strings list
        :return: public prefix
        """
        s = ''   # 定义一个空字符串来接收公共前缀元素
        if len(strs) == 0:  # 如果列表里面没有元素
            return s
        for str_ in zip(*strs):
            if len(set(str_)) == 1:
                s += str_[0]
            else:    
                break
        return s

结语

坚持最重要,每日一题必不可少!

以上是关于LeetCode刷题14-简单-最长公共前缀的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode刷题-最长公共前缀(简单)

leetcode刷题之Longest Common Prefix(14)

每日算法/刷穿 LeetCode14. 最长公共前缀(简单)

leetcode算法-简单14. 最长公共前缀

leetcode-14.最长公共前缀(图)

LeetCode刷题记录_最长公共前缀