class Solution(object):
def back(self,left_trees, right_trees): # 建完树后向上搜索 # 并列的min 不影响时间复杂度的优化
# 先准备数据 min
minL = min(len(left_trees), len(right_trees)) # 并列不影响时间复杂度?【先不考虑时间复杂度】
for i in range(minL):
if left_trees[i] != right_trees[i]:
return left_trees[0: i]
return left_trees[0: minL] # 这句[0: minL]不用if哪个最小了 太方便了!
def create(self,strs,l,r):
if strs == [] or strs[0]=="":
return ""
if l == r:
return strs[l] # 这是单个节点回退
mid = (1+r) // 2
left_trees = self.create(strs, 1, mid)
right_trees = self.create(strs, mid+1, r)
# 这里全执行完才能最后执行一次!
return self.back(left_trees, right_trees) # 这是开始2个节点一对的回退
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
return self.create(strs, 0, len(strs)-1)