描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
方法一:利用python的max()和min(),在Python里字符串是可以比较的,按照ascII值排,举例abb, aba,abac,最大为abb,最小为aba。所以只需要比较最大最小的公共前缀就是整个数组的公共前缀
def longestCommonPrefix(self, strs):
if not strs: return ""
s1 = min(strs)
s2 = max(strs)
for i,x in enumerate(s1):
if x != s2[i]:
return s2[:i]
return s1
方法二:字典树 直接输出树内分支为“1”的树即可
def longestCommonPrefix(strs):
if not strs:
return ''
# 构建字典树
root = {}
for word in strs:
if not word: # 处理空字符串
return ''
node = root
for char in word:
node = node.setdefault(char, {})
node['#'] = '#' # 结束标志
res, node = '', root
while node != {'#': '#'}: # 注意判断结束条件
if len(node) == 1:
char = str(*node) # 字典中只有一个 key 时,可以使用解包操作
res += char
node = node[char]
else:
return res
return res