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

举报
布小禅 发表于 2021/08/02 17:38:48 2021/08/02
【摘要】 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

结语

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

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。