最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
Python:
我的做法
思路:
1.找出最短的字符串
2.根据最短的字符串长度进行while循环 遍历数组中每个str
3.把每个 str 中下标为 i 的字母放到set 中,set 长度为1 说明当前 i 位置,str 的字母 一样,把i 位置的字母放到res 中返回
4.执行用时:28 ms
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if len(strs) == 0:
return ""
if len(strs) == 1:
return strs[0]
if len(set(strs)) == 1:
return strs[0]
short_word = min(strs,key=len)
i = 0
res = ""
while i < len(short_word):
char_list = []
for word in strs:
char_list.append(word[i])
if len(set(char_list)) == 1 and len(res) == i:
res += word[i]
i += 1
return res
两层 for 循环也可以找出来
两种效率差不多
if len(strs) == 0:
return ""
if len(strs) == 1:
return strs[0]
if len(set(strs)) == 1:
return strs[0]
short_word = min(strs,key=len)
strs.remove(short_word)
for i,char in enumerate(short_word):
for other in strs:
if char != other[i]:
return short_word[:i]
pass
return short_word