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刷题之Longest Common Prefix(14)