问题
解答
1.暴力解法
最长的和最短的字符串即最长公共前缀(短板效应)
时间复杂度:O(N)
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs:
return ""
min_s1 = min(strs)
max_s2 = max(strs)
for i,item in enumerate(min_s1):#i为index,item为单个字符
if item != max_s2[i]:
return max_s2[:i]
return min_s1
2.水平扫描法
从第一个字符串开始遍历,并用prefix
储存每次比较出的公共前缀,最后结束返回prefiix
。
时间复杂度:O(N)
class Solution(object):
def longestCommonPrefix(self, strs: List[str]) -> str:
if len(strs) == 0:
return ""
prefix = strs[0]
for i in range(1,len(strs)):
while(strs[i].find(prefix) != 0):
prefix = prefix[:-1] # 非其他字符串的前缀就在尾部减去一个字符
return prefix