文章目录
前言
算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!
第一遍,不求最优解,但求能过!!!
📢 :❤布小禅❤
📢 作者专栏:
这是我刷第 4/100 道力扣简单题
一、题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”
难度:简单
二、解题思路
先把字符串遍历出来,再把字符串遍历了,然后比对每个字符
看起来思路是没错的,但是寻常的思路却行不通
不过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()函数将元组变成不含有重复项的集合
再对集合的长度进行判断,就可以拿到最长公共前缀
三、代码
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
结语
坚持最重要,每日一题必不可少!