Leetcode 刷题记录 14.最长公共前缀
问题描述
自己的解题方法
- 以strs中第一个字符串S为参照
- 遍历S的每一个元素,遍历strs中的每一个字符串,如果元素不相同,停止遍历,如果相同,返回相同的前f个元素
代码如下:
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if len(strs) == 0:
return ""
if len(strs)==1:
return strs
s=strs[0]
flag=0
f=0
for i in range(len(s)):
for j in range(1,len(strs)):
if i>=len(strs[j]):
break
if strs[j][i]!=s[i]:
flag=0
return s[0:f]
else:
flag+=1
if flag==len(strs)-1:
f+=1
flag=0
return s[0:f]
结果如下图
其他方法
该方法利用了python的zip函数以及set函数
zip(): 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回这些元组组成的列表,如果迭代器元素个数不一致,则返回列表长度与最短对象相同。利用*操作符,可以将元组分解成列表
例:
strs=["dog","docecar","dor"]
print(list(zip(*strs)))
注:输出时需要将zip转化成list,输出结果如下:
set( ): 集合是一个无序不重复元素序列可以使用大括号{}或者set()函数创建集合,创建空结合必须使用set()而不是{ },因为{ } 是用来创建一个空字典的
代码如下
def longestCommonPrefix(self,strs):
print(list(zip(*strs)))
res=""
for temp in zip(*strs):
temp_set=set(temp)
if len(temp_set)==1:
res+=temp[0]
else:
break
return res