14. 最长公共前缀
解法一:水平搜索
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
n = len(strs)
if n == 0: return ""
prefix = strs[0] #前缀
for i in range(1, n):
while strs[i].find(prefix) != 0: #若找不到前缀,前缀去尾
prefix = prefix[:len(prefix)-1]
return prefix解法二:垂直搜索
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
n = len(strs)
if n == 0: return ""
#以0号串为基准
for i in range(len(strs[0])): #对基准的每一位
for j in range(1, n): #比对所有串
#若找到一位与基准串不符,返回(前一个条件为了防越界)
if len(strs[j]) == i or strs[j][i] != strs[0][i]:
return strs[0][:i]
return strs[0] #都符合,则基准就是所求最后更新于