14.最长公共前缀
法一:超时
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
res=strs[0]
length=len(strs)
i=1
while i<length:
for j in range(1,len(res)+1):
if res[:j]!=strs[i][:j]:
res=res[:j-1]
if res=='':
return res
break
return res
法一改进:使用find函数,我认为思路和我的法一是一样的,难道就是python内置函数比自己实现要优化好多?
40 ms 14.8 MB
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
res=strs[0]
for i in range(len(strs)):
while strs[i].find(res)!=0:
res=res[:-1]
if res=='':
return ''
return res
法二:先排序直接比较首尾单词公共最长前缀。
执行用时:40 ms
内存消耗:14.9 MB
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
strs.sort()
res=''
length=len(strs)
count=min(len(strs[0]),len(strs[length-1]))
for i in range(count):
if strs[0][i]==strs[length-1][i]:
res+=strs[0][i]
else:
break
return res
法三:纵向暴力解法
40 ms 15 MB
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
res=''
for i in range(len(strs[0])):
for j in range(1,len(strs)):
if len(strs[j])<=i:
return res
if strs[j][i]!=strs[0][i]:
return res
res+=strs[0][i]
return res