一、题设
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
二、基本思路
1.拿出第一个子串的每个字符,分别与剩下的字符串去匹配是否相等,不是则停下。
2.需要判断全为空字符串,有空字符的情况。
三、代码实现
class Solution(object):
def longestCommonPrefix(self, strs):
# 字符串只有一个子串之间返回
if len(strs) == 1:
return strs[0]
# 计算最小比较次数
min_lens = 999
for i in range (len(strs)):
current_lens = len(strs[i])
# 当前子串有长度为0的直接返回
if current_lens == 0:
return strs[i]
# min_lens存储最短子串长度
if current_lens < min_lens:
min_lens = current_lens
# 最短长度为0直接返回
if min_lens == 0:
return strs[0]
for i in range (min_lens):#----i:0
tag = strs[0][i]
#return tag -----a
#return len(strs) -------
for j in range(1,len(strs)):# ----j:1
if tag != strs[j][i]: # a != a
return strs[0][:i]
return strs[0][:min_lens]
四、效率总结
这题总之来说我自己的写法有点拖沓, 除了普遍情况外需要考虑字符串是否全空、部分空的情况,这种排除特殊情况的做法也是我的弱项,老是这个案例排除了前几个又不行了,唉还得练。明天见~