LeetCode刷题14-简单-最长公共前缀
【摘要】 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)