class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs: #若无字符串则返回空
return ""
pre, count = strs[0], len(strs) #第一个字字符串 以及 strs个数
for i in range(1, count): #遍历strs中除第一个之外的字符串
pre = self.lcp(prefix, strs[i]) #调用 lcp函数
if not pre: #pre ==None时 退出循环 进入下一步 return prefix
break
return pre
def lcp(self, str1, str2):
length, index = min(len(str1), len(str2)), 0
while index < length and str1[index] == str2[index]: #一个一个比对过去 不等则退出 返回strs中上一个index的位置
index += 1
return str1[:index]
解法二:遍历每个字符串同一位置,相同则记住位置,不同则返回之前的相同的位置
class Solution:
def longestCommonPrefix(self, strs) -> str:
if strs == None:
return ''
n = len(strs[0])
first = strs[0]
for i in range(n):
# 当所有字符串等长 或者 遇到不相等时 直接返回
while any(i == len(strs[j]) or strs[j][i] != first[i] for j in range(1,len(strs))): #注意加any
return first[:i]
return first