Leetcode日记 14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:“”
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
- 我的答案:首先去除两种特例,只有一个和空列表,在这之后根据列表的长度len来进行判断是否相等,在这之间我用了一个布尔类型变量stop来终止while循环
if len(strs) == 0 :
return ""
if len(strs) == 1 :
return strs[0]
signal = len(strs)
min_len = len(min(strs, key=len))
i = 0
stop = True
while i < min_len and stop == True:
signal_ = strs[0][i]
for j in range(1,signal) :
if signal_ == strs[j][i] :
if j == signal -1 :
i += 1
else :
stop = False
break
if i == 500 :
return ""
else :
return strs[0][:i]
-
提交通过,这个执行速度已经足够了8ms
-
我还看到了一个方法,这也是一个比较有趣的方法,都是最快的,他是通过双重for循环来进行判断,并且代码十分简练,不需要去除特例,很值得学习。
for i in range(len(strs[0])):
for str1 in strs:
if len(str1)<=i:
return strs[0][:i]
if str1[i]!=strs[0][i]:
return strs[0][:i]
return strs[0]