题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入:["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
算法
-
由于提供的单词长度不同,应该以长度最短单词作为基准单词进行比较,如["flower","flow","flight"]中应该以flow作为基准单词来和["flower","flight"]一一对比,因此需要先将列表根据列表中的单词长度来排序。
-
使用result参数存储公共前缀。从下标0(单词中第一个字母)开始,判断列表中每一个字符串同一索引位置所对应的字母是否与基准单词同一索引位置的字母相同,如果相同,更新最长公共前缀,然后判断下一个字母。
-
当某一个下标对应的字母与基准单词的同一下标对应的字母的值不相等,则停止更新最长公共前缀,并且返回最后更新的最长公共前缀。
考点
-
根据列表中的字符串长度排序
-
两层for循环的使用
代码:
def longestCommonPrefix(strs):
"""
:type strs: List[str]
:rtype: str
"""
strs.sort(key =len)# 根据列表中的字符串长度排序
ifnot strs:#如果列表为空,返回空
return''
result = ''#记录公共前缀,根据循环遍历实时更新result
for i in range(len(strs[0])):#以列表中长度最小的单词strs[0]的长度为基准进行遍历
for j in strs[1:]:#遍历列表中的除基准单词外的每个字符串
if j[i] != strs[0][i]:#如果列表中的字符串的对应下标的值与strs[0][i]不相同
return result
result += strs[0][i]#如果所有字符串下标都相同,更新最长公共前缀
return result