题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串
""
。示例1: 输入: ["flower","flow","flight"] 输出: "fl"示例:2 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
解析:
看着是很常见平常的题目,可是却搞了好久,也没搞出来,循环的表示老是出错,然后看了大神的博客,总结如下:
1.最长的公共前缀,也不会超过最短字符串的长度,所以可以求最短字符串的长度
2.用zip的特性,以及set集合不重复性
#最长的前缀不会超过最短字符串的长度 class Solution: def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ if not strs: return "" if len(strs)==1: return strs[0] min1=min(len(x)for x in strs) end=0 while end<min1: for i in range(1,len(strs)): if strs[i][end]!=strs[i-1][end]: return strs[0][:end] end+=1 return strs[0][:end]
#利用zip和set集合的特性 class Solution(object): def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ s="" if len(strs)==0: return "" for each in zip(*strs): if len(set(each))==1: s+=each[0] else: return s return s